author | Shantanu <shantanu@fossee.in> |
Mon, 26 Apr 2010 10:32:04 +0530 | |
changeset 103 | 587eb2416e6c |
parent 100 | 47a2ba7beaf8 |
child 113 | 6388eacf7502 |
permissions | -rw-r--r-- |
96
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
1 |
* Strings |
95
fddcfd83e4f0
Split data-files.org into numbers and strings.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff
changeset
|
2 |
*** Outline |
96
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
3 |
***** Strings |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
4 |
******* basic manipulation |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
5 |
******* operations |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
6 |
******* immutability |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
7 |
******* string methods |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
8 |
******* split and join |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
9 |
******* formatting - printf style |
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
10 |
***** Simple IO |
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
11 |
******* raw_input |
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
12 |
******* console output |
96
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
13 |
***** Odds and Ends |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
14 |
******* dynamic typing |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
15 |
******* comments |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
16 |
***** Arsenal Required |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
17 |
******* lists |
3498d74ed615
Changed outline of strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
95
diff
changeset
|
18 |
******* writing to files |
95
fddcfd83e4f0
Split data-files.org into numbers and strings.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff
changeset
|
19 |
*** Script |
103 | 20 |
Welcome friends. |
21 |
||
22 |
In the previous tutorial we have looked at data types for dealing |
|
23 |
with numbers. In this tutorial we shall look at strings. We shall |
|
24 |
look at how to do elementary string manipulation, and simple input |
|
25 |
and output operations. |
|
26 |
||
27 |
In this tuotrial we shall use concepts of writing python scripts and basics of lists that have been covered in previous session |
|
28 |
||
29 |
Lets get started by opening ipython interpreter. |
|
30 |
We shall create some |
|
31 |
a string by typing |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
32 |
|
103 | 33 |
a = open single quote 'This is a string' close single quote |
34 |
print a |
|
35 |
a contains the string |
|
36 |
we can check for datatype of a by using type(a) and shows it is 'str' |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
37 |
|
103 | 38 |
consider the case when string contains single quote. |
39 |
for example I'll be back |
|
40 |
to store these kind of strings, we use double quotes |
|
41 |
type |
|
42 |
b = open double quote "I'll be back" close double quote |
|
43 |
print b ptints the value |
|
44 |
||
45 |
IN python, anything enlosed in quotes is a string. Does not matter |
|
46 |
if they are single quotes or double quotes. |
|
47 |
||
48 |
There is |
|
49 |
also a special type of string enclosed in triple single quotes or triple double |
|
50 |
quotes. |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
51 |
|
103 | 52 |
so when you do |
53 |
c = '''Iam also a string''' |
|
54 |
print c |
|
55 |
and c is also string variable |
|
56 |
and even |
|
57 |
d = """And one more.""" |
|
58 |
print d |
|
59 |
d is also a string |
|
60 |
||
61 |
These strings enclosed in triple quotes are special type of strings, called docstrings, and they shall |
|
62 |
be discussed in detail along with functions |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
63 |
|
103 | 64 |
We know elements in lists and arrays can be accessed with indices. |
65 |
similarly string elements |
|
66 |
can also be accessed with their indexes. and here also, indexing starts from 0 |
|
67 |
||
68 |
so |
|
69 |
print a[0] gives us 'T' which is the first character |
|
70 |
print a[5] gives us 'i' which is 6th character. |
|
71 |
||
72 |
The len function, which we used with lists and arrays, works with |
|
73 |
strings too. |
|
74 |
len(a) gives us the length of string a |
|
95
fddcfd83e4f0
Split data-files.org into numbers and strings.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff
changeset
|
75 |
|
103 | 76 |
Python's strings support the + and * operations |
77 |
+ concatenates two strings. |
|
78 |
so a + b gives us the two srtings concatenated |
|
79 |
and * is used for replicating a string for given number of times. |
|
80 |
so a * 4 gives us a replicated 4 times |
|
81 |
||
82 |
What do you think would happen when you do a * a? |
|
83 |
It's obviously an error since, it doesn't make any logical sense. |
|
84 |
||
85 |
One thing to note about strings, is that they are immutable, which means when yo do |
|
86 |
a[0] = 't'it throws an error |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
87 |
|
103 | 88 |
Then how does one go about doing strings manipulations. Python provides |
89 |
'methods' for doing various manipulations on strings. For example - |
|
90 |
||
91 |
a.upper() returns a string with all letters capitalized. |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
92 |
|
103 | 93 |
and a.lower() returns a string with all smaller case letters. |
94 |
||
95 |
there are many other methods available and we shall use Ipython auto suggestion feature to find out |
|
96 |
||
97 |
type a. and hit tab |
|
98 |
we can see there are many methods available in python for string manipulation |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
99 |
|
103 | 100 |
lets us try startswith |
101 |
a.startswith('Thi') |
|
102 |
returns True if the string starts with the argument passed. |
|
103 |
||
104 |
similarly there's endswith |
|
105 |
a.endswith('ING') |
|
106 |
||
107 |
We've seen the use of split function in the previous |
|
108 |
tutorials. split returns a list after splitting the string on the |
|
109 |
given argument. |
|
110 |
alist = a.split() |
|
111 |
will give list with four elements. |
|
112 |
print alist |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
113 |
|
103 | 114 |
Python also has a 'join' function, which does the opposite of what |
115 |
split does. |
|
116 |
' '.join(alist) will return the original string a. |
|
117 |
This function takes list of elements(in our case alist) to be joined. |
|
118 |
'-'.join(alist) will return a string with the spaces in the string |
|
119 |
'a' replaced with hyphens. |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
120 |
|
103 | 121 |
please note that after all these operations, the original string is not changed. |
122 |
and print a prints the original string |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
123 |
|
103 | 124 |
At times we want our output or message in a particular |
125 |
format with variables embedded, something like printf in C. For |
|
126 |
those situations python provides a provision. First lets create some |
|
127 |
variables say |
|
128 |
||
129 |
In []: x, y = 1, 1.234 |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
130 |
|
103 | 131 |
In []: print 'x is %s, y is %s' %(x, y) |
132 |
Out[]: 'x is 1, y is 1.234' |
|
133 |
Here %s means string, you can also try %d or %f for integer and |
|
134 |
float values respectively. |
|
135 |
* formatting - printf style * |
|
136 |
||
137 |
we have seen how to output data |
|
138 |
Now we shall look at taking input from the console. |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
139 |
|
103 | 140 |
The raw_input function allows us to take input from the console. |
141 |
type a = raw_input() and hit enter |
|
142 |
now python is waiting for input |
|
143 |
type 5 and hit enter |
|
144 |
||
145 |
we can check for the value of a by typing print a and we see that it is 5 |
|
146 |
||
147 |
raw_input also allows us to give a prompt string. |
|
148 |
we type |
|
149 |
a = raw_input("Enter a value: ") |
|
150 |
and we see that the string given as argument is prompted at the user. |
|
151 |
5 |
|
152 |
Note that a, is now a string variable and not an integer. |
|
153 |
type(a) |
|
154 |
raw_input takes input only as a string |
|
155 |
||
156 |
we cannot do mathematical operations on it |
|
157 |
but we can use type conversion similar to that shown in previous tutorial |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
158 |
|
103 | 159 |
b = int(a) |
160 |
a has now been converted to an integer and stored in b |
|
161 |
type(b) gives int |
|
162 |
b can be used here for mathematical operations. |
|
163 |
||
164 |
For console output, we have been using print which is pretty straightforward. |
|
165 |
||
166 |
We shall look at a subtle feature of the print statement. |
|
167 |
||
168 |
Open scite editor and type |
|
169 |
print "Hello" |
|
170 |
print "World" |
|
171 |
We save the file as hello1.py run it from the ipython interpreter. Make |
|
172 |
sure you navigate to the place, where you have saved it. |
|
173 |
%run hello1.py |
|
174 |
||
175 |
Now we make a small change to the code snippet and save it in the |
|
176 |
file named "hello2.py" |
|
177 |
print "Hello", |
|
178 |
print "World" |
|
179 |
We now run this file, from the ipython interpreter. |
|
180 |
%run hello2.py |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
181 |
|
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
182 |
|
103 | 183 |
Note the difference in the output. |
184 |
The comma adds a space at the end of the line, instead |
|
185 |
of a new line character that is normally added. |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
186 |
|
103 | 187 |
Before we wind up, a couple of miscellaneous things. |
188 |
As you may have already noticed, Python is a dynamically typed |
|
189 |
language, that is you don't have to specify the type of a variable |
|
190 |
when using a new one. You don't have to do anything special, to 'reuse' |
|
191 |
a variable that was of int type as a float or string. |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
192 |
|
103 | 193 |
a = 1 and here a is integer |
194 |
lets store a float value in a by doing |
|
195 |
a = 1.1 |
|
196 |
and print a |
|
197 |
now a is float |
|
198 |
a = "Now I am a string!" |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
199 |
|
103 | 200 |
Comments in Python start with a pound or hash sign. Anything after |
201 |
a #, until the end of the line is considered a comment, except of |
|
202 |
course, if the hash is in a string. |
|
203 |
a = 1 # in-line comments |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
204 |
|
103 | 205 |
pritn a and we see that comment is not a part of variable a |
206 |
||
207 |
a = "# not a comment" |
|
97
25248b12f6e4
Major changes to strings.org.
Puneeth Chaganti <punchagan@gmail.com>
parents:
96
diff
changeset
|
208 |
|
103 | 209 |
we come to the end of this tutorial on strings |
210 |
In this tutorial we have learnt what are supported operations on strings |
|
211 |
and how to perform simple Input and Output operations in Python. |
|
95
fddcfd83e4f0
Split data-files.org into numbers and strings.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff
changeset
|
212 |
|
fddcfd83e4f0
Split data-files.org into numbers and strings.
Puneeth Chaganti <punchagan@gmail.com>
parents:
diff
changeset
|
213 |
*** Notes |