2007年2月23日星期五

Python笔记(2)——字符串

表示方法
在Python中,像'single quotes'和"double quotes"这样包含在单引号或双引号里的内容称为“字符串”。和数值类似,字符串也可以认为有一个值——就是它本身。例如:

>>>'single quotes'
'single quotes'

但如果字符串内容本身包含引号又应该怎样表示呢?方法是用反斜线“\”来“转义”,例如单词“Doesn't”,要写成
>>>'Doesn\'t'
"Doesn't"

注意和上个例子比较一下。刚才输出的字符串是用单引号括起来的,而这时变成了单引号。再看几个例子:
>>>"Doesn't"
"Doesn't"
>>>"Doesn\'t"
"Doesn't"
>>>'You asked: "I can\'t understand."'
'You asked: "I can\'t understand."'
>>>"You asked: \"I can't understand.\""
'You asked: "I can\'t understand."'

经过这些试验,我自己总结了一条规律:由左至右,像一个栈一样,引号依次完成匹配。呵呵,似乎很难理解——我自己也觉得很绕口。简单来说,只要你觉得Python能明白你的意思,就成。
和C语言类似,Python中也预先定义好了一个特殊字符。如\n代表换行符,例如:
>>>"line 1\nline 2"
'line 1\nline 2'

怪了,怎么没有显示在两行上?查阅手册得知,要使用print语句:
>>>print "line 1\nline 2"
line 1
line 2

print是打印的意思,所以细心点就会发现,此时输出结果中已经没有了外围的引号了。
如果我们要显示的字符串里包含了\n之类的字符组合怎么办?例如要打印的就是line 1\nline 2,当然可以用转义的办法去实现,记住“\”要写成“\\”:
>>>print "line 1\\nline 2"
line 1\nline 2

实际上还要一种更方便的方法,就是使用raw string,也就是在字符串前面加个“r”,这样就告诉Python解释器别多操心,只管老老实实地照着原样输出:
>>>print r"line 1\n line 2"
line 1\nline 2

字符串连接
多个字符串可以用“+”来连接,形成一个字符串:
>>>str="hello"+" world"
>>>print str
hello world

这个很简单,没什么可说的。和多数语言不同的是,Python实现了整数与字符串的乘法,显然地,结果就是把一个字符串重复n次:
>>>print "hello! "*3
hello! hello! hello!

是不是很新鲜呢?

在字符串中抽取内容
显然字符串是由一个个字符构成的,那就应该有办法取得里面的单个字符,或者是部分字符构成的字符串(子串)。Python用一个整数下标来表示,下标从0开始:
>>>str="word"
>>>str[2]
'r'
也可以指定一个下标区间,这样就得到了子串:
>>>str[0:2]
'wo'
需要注意的是,[m:n]实际上表示的是[m,n),即不包括下标为n的那个字符。而且下标的用法也很灵活:
>>>str[:3]
'wor'
>>>str[2:]
'rd'
>>>str[:]
'word'
用len()可以得到字符串的长度:
>>>len(str)
4

先领悟一下吧。字符串部分还会涉及到Unicode。我先去休息了。

没有评论: