manipulating-strings/script.rst
author Nishanth <nishanth@fossee.in>
Tue, 12 Oct 2010 11:26:09 +0530
changeset 334 4b1e81da1c80
parent 286 44f06ae0d957
child 350 d14bc84feca1
permissions -rw-r--r--
Finished using_sage_to_teach
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 
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    20
   Internal Reviewer   : 
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
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    39
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
    40
through out this session. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    41
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    42
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
    43
get sub-strings. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    44
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    45
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
    46
of the week. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    47
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
    week = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"]
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    51
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
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
    54
valid name of a day of the week or not. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    55
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
    s = saturday
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    59
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
``s`` could be in any of the forms --- sat, saturday, Sat, Saturday,
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    62
SAT, SATURDAY. We shall now be solving the problem only for the forms,
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    63
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
    64
the tutorial. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    65
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    66
{{{ show these forms in a slide }}}
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    67
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    68
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
    69
exists in the variable ``week``. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    70
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    71
As, with any of the string data-types, strings can be sliced into
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    72
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
    73
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    74
::
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
    s[0:3]
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
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
    79
not included. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    80
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    81
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
    82
using ``s[-1]``.  
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    83
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    84
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
    85
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    86
%%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
    87
from the string s. 
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    88
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
    89
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
    90
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    91
::
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
    s[1:-1]
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
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
    96
characters. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    97
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
    98
::
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
    s = saturday
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   101
    s[:3]
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   102
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   103
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
   104
``week``. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   105
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   106
::
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
    s[:3] in week          
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
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
   111
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
   112
that remains same even when it has been reversed.
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   113
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   114
Let the string given be ``malayalam``.
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
::
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
    s = "malayalam"
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
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
   121
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   122
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
   123
[::-1]
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   124
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   125
So, we obtain the reverse of s, by simply saying, 
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
::
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
    s[::-1]
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
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
   132
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   133
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   134
    s == s[::-1]
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
As, expected, we get ``True``. 
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
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
   139
``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
   140
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
   141
comparing. Python provides methods, ``s.lower`` and ``s.upper`` to
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   142
achieve this. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   143
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   144
Let's try it out. 
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
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   147
   s = "Malayalam"
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.upper()
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
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.lower()
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() == s.lower()[::-1]
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
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
   158
a new string.
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   159
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   160
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
   161
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   162
%%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
   163
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
   164
Saturday and Sat.
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   165
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   166
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
   167
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   168
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   169
286
44f06ae0d957 Slides for manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 266
diff changeset
   170
    s in week
44f06ae0d957 Slides for manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 266
diff changeset
   171
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   172
    s.lower()[:3] in week
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
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
   175
present in the list ``week``. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   176
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   177
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
   178
which have @ and periods replaced with text, something like
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   179
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
   180
addresses.  
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   181
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   182
Let's say the variable email has the email address. 
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
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   185
   email = "info[at]fossee[dot]in"
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   186
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   187
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
   188
method of strings. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   189
::
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
   email = email.replace("[at]", "@")
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   192
   print email
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   193
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   194
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
   195
286
44f06ae0d957 Slides for manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 266
diff changeset
   196
%%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
   197
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   198
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
   199
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   200
::
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   201
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   202
   email = email.replace("[dot]", ".")        
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   203
   print email
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   204
266
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   205
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
   206
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
   207
addresses separated by commas or semi-colons. 
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   208
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   209
::
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   210
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   211
  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
   212
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   213
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   214
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
   215
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
   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
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   219
  email_str = ", ".join(email_list)
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   220
  print email_str
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   221
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   222
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
   223
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   224
Following is an exercise that you must do. 
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
%%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
   227
a semicolon instead of a comma. 
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
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
   230
8018779e02b7 Added questions to manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 265
diff changeset
   231
::
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
  email_str = email_str.replace(",", ";")
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   234
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   235
That brings us to the end of the tutorial. 
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   236
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   237
{{{ show summary slide }}}
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   238
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   239
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
   240
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
   241
join. 
217
b595f90016c5 Changed structure of my scripts.
Puneeth Chaganti <punchagan@fossee.in>
parents:
diff changeset
   242
265
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   243
{{{ Show the "sponsored by FOSSEE" slide }}}
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   244
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   245
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
   246
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   247
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
   248
Thank you!
5734d03b026c Cleaned up script of manipulating strings LO.
Puneeth Chaganti <punchagan@fossee.in>
parents: 217
diff changeset
   249