Python/C3/Manipulating-strings /English

From Script | Spoken-Tutorial
Revision as of 11:49, 29 November 2012 by Chandrika (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Visual Cue Narration
Show Slide 1

Containing title, name of the production team along with the logo of MHRD

Hello Friends and Welcome to this tutorial on 'manipulating strings'.
Show Slide 2

Learning objectives

At the end of this tutorial, you will be able to,
  1. Slice strings and get sub-strings out of them.
  2. Reverse strings.
  3. Replace characters in strings.
  4. Convert strings to upper or lower case.
  5. Join a list of strings.


Show Slide 3

Pre-requisite slide

Before beginning this tutorial,we would suggest you to complete the tutorial on "getting started with strings", "getting started with lists" and "basic datatypes and operators".
Open the terminal
ipython
Let us invoke our ipython interpreter
week = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"] 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.

s = "saturday" 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. Let us define our string as,
Show Slide 4

Forms

s could be in any of the forms --- sat, saturday, Sat, Saturday, SAT, SATURDAY. For now, we shall 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.
Switch to the terminal
s[0:3]
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,

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].

Pause the video here, try out the following exercise and resume the video.

Show Slide 5

Assignment 1

Obtain the sub-string excluding the first and last characters

from the string s.

Continue from paused state Switch to the terminal
s[1:-1]
Switch to the terminal for solution
s[:3]
s[:3] in week
We get the substring of s, without the first and the last characters of s.

Now let us check if a particular substring is present in the variable week. We shall check for 'sat'.

s1 = "malayalam" We get the result as true. 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.

s1[::-1] Now, we need to compare this string with it's reverse.

Again, we will use a technique common to all sequence data-types, that is, [::-1]

So, we obtain the reverse of s, by simply saying,

s1 == s1[::-1] Now, to check if the string is s is palindromic, we say
s1 = "Malayalam"
s1.upper()
s1
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 to all upper case, before comparing. Python provides methods, s.lower and s.upper to achieve this.

Let's try it out.

s1.lower()
s1.lower() == s1.lower()[::-1]
As you can see, s has not changed. It is because, upper returns a new string. It doesn't change the original string. Similarly,
Pause the video here, try out the following exercise and resume the video.
Show Slide 6

Assignment 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.

Continue from paused state Switch to the terminal
s in week

s.lower()[:3] in week
Switch to your terminal for solution
email = "info[at]fossee[dot]in" 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 = email.replace("[at]", "@")
print email
Now, we first replace the [at] with the @, using the replace method of strings.
Pause the video here, try out the following exercise and resume the video.
Show Slide 7

Assignment 3

Replace the [dot] with . in email
Continue from paused state Switch to the terminal
email = email.replace("[dot]", ".")
print email
Switch to the terminal for solution
email_list = ["info@fossee.in", "enquiries@fossee.in", "help@fossee.in"] Now, let us 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_str = ", ".join(email_list)
print email_str
Now, if we wish to obtain one long string, separating each of the email id by a comma, we use the join operator on ,.
Notice that the email ids are joined by a comma followed by a space.

Pause the video here, try out the following exercise and resume the video.

Show Slide 8

Assignment 4

From the email_str that we generated, change the separator to be

a semicolon instead of a comma.

Continue from paused state Switch to the terminal
email_str = email_str.replace(",", ";")
print email_str
Switch to the terminal for solution
We see that the email ids are joined by a semicolon followed by a space.
Show Slide 9

Summary slide

This brings us to the end of this tutorial. In this tutorial, we have learnt to,
  1. Obtain sub-strings and reverse of strings by using the index numbers
  2. Use following functions - - upper() -- to obtain the upper case of a string - lower() -- to obtain the lower case of a string - replace() -- to replace a character by another one - join() -- to join a list of strings with an operator


Show Slide 10

Self assessment questions slide

Here are some self assessment questions for you to solve
  1. Given a string s = "this is a string", how will you change it to "this isn't a list" ?
  2. Given the string "F.R.I.E.N.D.S" in s, obtain the string "friends".


Show Slide 11

Solution of self assessment questions on slide

And the answers,

1. We will use the replace function to accomplish this.

s = s.replace("string", "list")
s = s.replace("is", "isn't")
s

We notice that every 'is' in the statement has been replaced by isn't.

  1. In order to change the string to lower case, we use the method lower()

Enumerated list ends without a blank line; unexpected unindent.

s[::2].lower()
Show Slide 12

Acknowledgment slide

Hope you have enjoyed this tutorial and found it useful. Thank you!

Contributors and Content Editors

Chandrika