manipulating-strings/script.rst
author amit
Tue, 26 Oct 2010 16:04:50 +0530
changeset 350 d14bc84feca1
parent 286 44f06ae0d957
child 381 5415cb1bb4af
permissions -rw-r--r--
Reviewed manipulating strings
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
     1
.. Objectives
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
     2
.. ----------
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
     3
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
     4
.. By the end of this tutorial, you will be able to
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
     5
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
     6
.. 1. Slice strings and get sub-strings out of them
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
     7
.. #. Reverse strings
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
     8
.. #. Replace characters in strings. 
286
44f06ae0d957 Slides for manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 266
diff changeset
     9
.. #. Convert strings to upper or lower case
266
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
    10
.. #. joining a list of strings
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    11
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    12
.. Prerequisites
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    13
.. -------------
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    14
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    15
..   1. getting started with strings
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    16
..   #. getting started with lists
266
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
    17
..   #. basic datatypes
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    18
     
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    19
.. Author              : Puneeth 
350
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
    20
   Internal Reviewer   : Amit 
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    21
   External Reviewer   :
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    22
   Checklist OK?       : <put date stamp here, if OK> [2010-10-05]
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    23
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    24
Script
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    25
------
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    26
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    27
{{{ Show the slide containing title }}}
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    28
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    29
Hello Friends. Welcome to this tutorial on manipulating strings. 
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    30
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    31
{{{ show the slide with outline }}} 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    32
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    33
In this tutorial we shall learn to manipulate strings, specifically
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    34
slicing and reversing them, or replacing characters, converting from
266
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
    35
upper to lower case and vice-versa and joining a list of strings.
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    36
266
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
    37
.. #[punch: reversed returns an iterator. should we still teach it?]
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    38
350
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
    39
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    40
We have an ``ipython`` shell open, in which we are going to work,
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    41
through out this session. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    42
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    43
Let us consider a simple problem, and learn how to slice strings and
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    44
get sub-strings. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    45
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    46
Let's say the variable ``week`` has the list of the names of the days
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    47
of the week. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    48
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    49
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    50
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    51
    week = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"]
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    52
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    53
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    54
Now given a string ``s``, we should be able to check if the string is a
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    55
valid name of a day of the week or not. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    56
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    57
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    58
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    59
    s = saturday
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    60
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    61
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    62
``s`` could be in any of the forms --- sat, saturday, Sat, Saturday,
350
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
    63
SAT, SATURDAY. For now, shall now be solving the problem only for the forms,
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    64
sat and saturday. We shall solve it for the other forms, at the end of
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    65
the tutorial. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    66
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    67
{{{ show these forms in a slide }}}
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    68
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    69
So, we need to check if the first three characters of the given string
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    70
exists in the variable ``week``. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    71
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    72
As, with any of the string data-types, strings can be sliced into
350
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
    73
.. #[Amit: Sequence data type???]
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    74
sub-strings. To get the first three characters of s, we say, 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    75
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    76
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    77
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    78
    s[0:3]
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    79
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    80
Note that, we are slicing the string from the index 0 to index 3, 3
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    81
not included. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    82
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    83
As we already know, the last element of the string can be accessed
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    84
using ``s[-1]``.  
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    85
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    86
Following is an exercise that you must do. 
350
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
    87
.. #[Amit: I don't know I am not sure about the sentence formation.]
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    88
%%1%% Obtain the sub-string excluding the first and last characters
286
44f06ae0d957 Slides for manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 266
diff changeset
    89
from the string s. 
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    90
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    91
Please, pause the video here. Do the exercise(s) and then continue. 
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    92
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    93
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    94
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    95
    s[1:-1]
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    96
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    97
gives the a substring of s, without the first and the last
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    98
characters. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    99
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   100
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   101
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   102
    s = saturday
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   103
    s[:3]
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   104
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   105
Now, we just check if that substring is present in the variable
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   106
``week``. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   107
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   108
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   109
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   110
    s[:3] in week          
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   111
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   112
Let us now consider the problem of finding out if a given string is
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   113
palindromic or not. First of all, a palindromic string is a string
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   114
that remains same even when it has been reversed.
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   115
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   116
Let the string given be ``malayalam``.
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   117
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   118
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   119
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   120
    s = "malayalam"
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   121
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   122
Now, we need to compare this string with it's reverse. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   123
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   124
Again, we will use a technique common to all sequence data-types,
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   125
[::-1]
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   126
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   127
So, we obtain the reverse of s, by simply saying, 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   128
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   129
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   130
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   131
    s[::-1]
350
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
   132
.. #[amit: I think using reversed in not required after this]
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   133
Now, to check if the string is ``s`` is palindromic, we say
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   134
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   135
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   136
    s == s[::-1]
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   137
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   138
As, expected, we get ``True``. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   139
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   140
Now, if the string we are given is ``Malayalam`` instead of
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   141
``malayalam``, the above comparison would return a False. So, we will
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   142
have to convert the string to all lower case or all upper case, before
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   143
comparing. Python provides methods, ``s.lower`` and ``s.upper`` to
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   144
achieve this. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   145
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   146
Let's try it out. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   147
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   148
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   149
   s = "Malayalam"
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   150
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   151
   s.upper()
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   152
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   153
   s
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   154
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   155
   s.lower()
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   156
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   157
   s.lower() == s.lower()[::-1]
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   158
   
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   159
Note that these methods, do not change the original string, but return
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   160
a new string.
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   161
350
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
   162
.. #[amit: I wish we could include this right when s.upper() is used so 
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
   163
.. that it is clear]
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
   164
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   165
Following is an exercise that you must do. 
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   166
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   167
%%2%% Check if ``s`` is a valid name of a day of the week. Change the
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   168
solution to this problem, to include forms like, SAT, SATURDAY,
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   169
Saturday and Sat.
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   170
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   171
Please, pause the video here. Do the exercise and then continue. 
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   172
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   173
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   174
286
44f06ae0d957 Slides for manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 266
diff changeset
   175
    s in week
44f06ae0d957 Slides for manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 266
diff changeset
   176
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   177
    s.lower()[:3] in week
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   178
350
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
   179
.. #[amit: May be a sentence or two about what our original problem was and 
d14bc84feca1 Reviewed manipulating strings
amit
parents: 286
diff changeset
   180
.. how this helps in solving it. One can loose the flow.]
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   181
We just convert any input string to lower case and then check if it is
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   182
present in the list ``week``. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   183
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   184
Now, let us consider another problem. We often encounter e-mail id's
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   185
which have @ and periods replaced with text, something like
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   186
info[at]fossee[dot]in. We now wish to get back proper e-mail
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   187
addresses.  
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   188
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   189
Let's say the variable email has the email address. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   190
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   191
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   192
   email = "info[at]fossee[dot]in"
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   193
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   194
Now, we first replace the ``[at]`` with the ``@``, using the replace
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   195
method of strings. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   196
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   197
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   198
   email = email.replace("[at]", "@")
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   199
   print email
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   200
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   201
Following is an exercise that you must do. 
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   202
286
44f06ae0d957 Slides for manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 266
diff changeset
   203
%%3%% Replace the ``[dot]`` with ``.`` in ``email``
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   204
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   205
Please, pause the video here. Do the exercise and then continue. 
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   206
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   207
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   208
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   209
   email = email.replace("[dot]", ".")        
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   210
   print email
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   211
266
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   212
Now, let's look at another interesting problem where we have a list of
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   213
e-mail addresses and we wish to obtain one long string of e-mail
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   214
addresses separated by commas or semi-colons. 
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   215
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   216
::
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   217
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   218
  email_list = ["info@fossee.in", "enquiries@fossee.in",  "help@fossee.in"]
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   219
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   220
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   221
Now, if we wish to obtain one long string, separating each of the
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   222
email id by a comma, we use the join operator on ``,``. 
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   223
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   224
::
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   225
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   226
  email_str = ", ".join(email_list)
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   227
  print email_str
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   228
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   229
Notice that the email ids are joined by a comma followed by a space. 
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   230
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   231
Following is an exercise that you must do. 
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   232
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   233
%%3%% From the email_str that we generated, change the separator to be
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   234
a semicolon instead of a comma. 
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   235
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   236
Please, pause the video here. Do the exercise and then continue. 
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   237
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   238
::
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   239
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   240
  email_str = email_str.replace(",", ";")
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   241
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   242
That brings us to the end of the tutorial. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   243
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   244
{{{ show summary slide }}}
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   245
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   246
In this tutorial, we have learnt how to get substrings, reverse
266
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   247
strings and a few useful methods, namely upper, lower, replace and
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   248
join. 
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   249
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   250
{{{ Show the "sponsored by FOSSEE" slide }}}
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   251
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   252
This tutorial was created as a part of FOSSEE project, NME ICT, MHRD India
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   253
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   254
Hope you have enjoyed and found it useful.
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   255
Thank you!
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   256