diff -r 88a01948450d -r d33698326409 manipulating_strings/script.rst --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/manipulating_strings/script.rst Wed Dec 01 16:51:35 2010 +0530 @@ -0,0 +1,255 @@ +.. Objectives +.. ---------- + +.. By the end of this tutorial, you will be able to + +.. 1. Slice strings and get sub-strings out of them +.. #. Reverse strings +.. #. Replace characters in strings. +.. #. Convert strings to upper or lower case +.. #. joining a list of strings + +.. Prerequisites +.. ------------- + +.. 1. getting started with strings +.. #. getting started with lists +.. #. basic datatypes + +.. Author : Puneeth + Internal Reviewer : Amit + External Reviewer : + Language Reviewer : Bhanukiran + Checklist OK? : <08-11-2010, Anand, OK> [2010-10-05] + +Script +------ + +{{{ Show the slide containing title }}} + +Hello Friends. Welcome to this tutorial on manipulating strings. + +{{{ show the slide with outline }}} + +In this tutorial we shall learn to manipulate strings, specifically +slicing and reversing them, or replacing characters, converting from +upper to lower case and vice-versa and joining a list of strings. + +We have an ``ipython`` shell open, in which we are going to work, +through out this session. + +Let us consider a simple problem, and learn how to slice strings and +get sub-strings. + +Let's say the variable ``week`` has the list of the names of the days +of the week. + +:: + + week = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"] + + +Now given a string ``s``, we should be able to check if the string is a +valid name of a day of the week or not. + +:: + + s = saturday + + +``s`` could be in any of the forms --- sat, saturday, Sat, Saturday, +SAT, SATURDAY. For now, shall now be solving the problem only for the forms, +sat and saturday. We shall solve it for the other forms, at the end of +the tutorial. + +{{{ show these forms in a slide }}} + +So, we need to check if the first three characters of the given string +exists in the variable ``week``. + +As, with any of the sequence data-types, strings can be sliced into +sub-strings. To get the first three characters of s, we say, + +:: + + s[0:3] + +Note that, we are slicing the string from the index 0 to index 3, 3 +not included. + +As we already know, the last element of the string can be accessed +using ``s[-1]``. + +Following is an exercise that you must do. + +%%1%% Obtain the sub-string excluding the first and last characters +from the string s. + +Please, pause the video here. Do the exercise(s) and then continue. + +:: + + s[1:-1] + +gives the substring of s, without the first and the last +characters of s. + +:: + + s = saturday + s[:3] + +Now, we just check if that substring is present in the variable +``week``. + +:: + + s[:3] in week + +Let us now consider the problem of finding out if a given string is +palindromic or not. First of all, a palindromic string is a string +that remains same even when it has been reversed. + +Let the string given be ``malayalam``. + +:: + + s = "malayalam" + +Now, we need to compare this string with it's reverse. + +Again, we will use a technique common to all sequence data-types, +[::-1] + +So, we obtain the reverse of s, by simply saying, + +:: + + s[::-1] + +Now, to check if the string is ``s`` is palindromic, we say +:: + + s == s[::-1] + +As, expected, we get ``True``. + +Now, if the string we are given is ``Malayalam`` instead of +``malayalam``, the above comparison would return a False. So, we will +have to convert the string to all lower case or all upper case, before +comparing. Python provides methods, ``s.lower`` and ``s.upper`` to +achieve this. + +Let's try it out. +:: + + s = "Malayalam" + + s.upper() + + s + +As you can see, s has not changed. It is because, ``upper`` returns a +new string. It doesn't change the original string. + +:: + + s.lower() + + s.lower() == s.lower()[::-1] + +Following is an exercise that you must do. + +%%2%% Check if ``s`` is a valid name of a day of the week. Change the +solution to this problem, to include forms like, SAT, SATURDAY, +Saturday and Sat. + +Please, pause the video here. Do the exercise and then continue. + +:: + + s in week + + s.lower()[:3] in week + + +So, as you can see, now we can check for presence of ``s`` in +``week``, in whichever format it is present -- capitalized, or all +caps, full name or short form. + +We just convert any input string to lower case and then check if it is +present in the list ``week``. + +Now, let us consider another problem. We often encounter e-mail id's +which have @ and periods replaced with text, something like +info[at]fossee[dot]in. We now wish to get back proper e-mail +addresses. + +Let's say the variable email has the email address. +:: + + email = "info[at]fossee[dot]in" + +Now, we first replace the ``[at]`` with the ``@``, using the replace +method of strings. +:: + + email = email.replace("[at]", "@") + print email + +Following is an exercise that you must do. + +%%3%% Replace the ``[dot]`` with ``.`` in ``email`` + +Please, pause the video here. Do the exercise and then continue. + +:: + + email = email.replace("[dot]", ".") + print email + +Now, let's look at another interesting problem where we have a list of +e-mail addresses and we wish to obtain one long string of e-mail +addresses separated by commas or semi-colons. + +:: + + email_list = ["info@fossee.in", "enquiries@fossee.in", "help@fossee.in"] + + +Now, if we wish to obtain one long string, separating each of the +email id by a comma, we use the join operator on ``,``. + +:: + + email_str = ", ".join(email_list) + print email_str + +Notice that the email ids are joined by a comma followed by a space. + +Following is an exercise that you must do. + +%%3%% From the email_str that we generated, change the separator to be +a semicolon instead of a comma. + +Please, pause the video here. Do the exercise and then continue. + +:: + + email_str = email_str.replace(",", ";") + +That brings us to the end of the tutorial. + +{{{ show summary slide }}} + +In this tutorial, we have learnt how to get substrings, reverse +strings and a few useful methods, namely upper, lower, replace and +join. + +{{{ Show the "sponsored by FOSSEE" slide }}} + +This tutorial was created as a part of FOSSEE project, NME ICT, MHRD India + +Hope you have enjoyed and found it useful. +Thank you! +