1. Overview
前面快速浏览了Python的运行环境、代码编写语法、结构化if-else、函数等,接下来的几篇文章开始对Python的几个重点的数据结构进行介绍,包括字符串、list、set、tuple、dictionary等。
在“Python入门教程-02 变量” 一文中,已经简单介绍了字符串类型;本文则进一步详细介绍字符串相关的知识。但有关更多的字符串的操作,则我们还需要在介绍了list之后,再进行补充。——因为字符串一些操作和list有密切关系。
2. 字符串的表示方法
2.1 单引号、双引号表示法
最常见的就是用一对单引号或双引号括起来的一串字符,如:
>>> "Hello, Python!"
'Hello, Python!'
>>> 'Hello, Python'
'Hello, Python'
>>> s = "Hello, Python!"
>>> print s
Hello, Python!
>>> s = 'Hello, Python'
>>> print s
Hello, Python
单引号和双引号的表示方法是等价的,主要的使用场景是:
- 如果字符串中包含了单引号,那么可以用一对双引号表示;
- 反过来也是一样的,即如果字符串中包括了双引号,那么可以用一对单引号表示这个字符串。
示例:
>>> '"Happy birthday!", we said.'
'"Happy birthday!", we said.'
>>> print '"Happy birthday!", we said.'
"Happy birthday!", we said.
>>> "Let's go!"
"Let's go!"
>>> print "Let's go!"
Let's go!
>>>
2.2 转义符
当然,如果字符串中包括单引号,也可以用一对单引号括起来;对于双引号,也是类似。只是这时候需要对单引号或双引号进行转义处理。示例:
>>> print 'Let\'s go!'
Let's go!
>>> print "\"Happy birthday!\", we said."
"Happy birthday!", we said.
>>>
Pythoy支持的转义符和C/C++等是类似的,如\t、\n等:
>>> print "1.\tFirst line.\n2.\tSecond line.\n"
1. First line.
2. Second line.
>>> print "C:\\Windows\\system32\\"
C:\Windows\system32\
>>>
2.3 raw string
避免使用转义符的一种字符串表示方法是raw string,所谓的原始字符串。语法就是在字符串前面添加字符r。但这种表示方法有个局限性,即字符串的最后一个不能是转义符\。示例:
>>> print r'C:\Windows\system32\'
File "<stdin>", line 1
print r'C:\Windows\system32\'
^
SyntaxError: EOL while scanning string literal
>>> print r'C:\Windows\system32'
C:\Windows\system32
>>>
2.4 长字符串
除了单引号、双引号,Python中还有一种表示字符串的语法,即一对由三个单引号或三个双引号括起来的字符串。这种语法可以用来表示更长的字符串,即跨越多行。但更主要的用途在于作为docstring。——关于docstring的概念我们放在以后再详细介绍。
>>> print '''1.\tFirst line.
... 2.\tSecond line.
... '''
1. First line.
2. Second line.
>>> print """1.\tFirst line.
... 2.\tSecond line.
... """
1. First line.
2. Second line.
>>> print """"Let's go", she said."""
"Let's go", she said.
>>>
3. 拼接字符串
通常还有一种需求,即把多个字符串拼接成一个字符串。在Python中有两种方法:加号方式或无加号方式。其中后一种情况在C/C++代码中会经常见到。
>>> print "Hello, " "Python!"
Hello, Python!
>>> print "Hello, " + "Python!"
Hello, Python!
>>> x = "Hello, "
>>> y = "Python!"
>>> x + y
'Hello, Python!'
>>> x y
File "<stdin>", line 1
x y
^
SyntaxError: invalid syntax
>>>
4. 去掉字符串前后的空格
>>> s = ' Hello, world! '
>>> s.lstrip()
'Hello, world! '
>>> s.rstrip()
' Hello, world!'
>>> s.strip()
'Hello, world!'
>>>
5. 字符串的其他操作
字符串还有大量的其他操作,比如取子串、字符串替换,等等。待我们介绍了list之后,再讲解这一部分。
5.1 格式化字符串
用{:d}+format这种语法,示例:
>>> s = "00{:02d}.pdf"
>>> s.format(3)
'0003.pdf'
>>> s.format(30)
'0030.pdf'
>>> s = "Name: {:s}, ID: {:04d}, Score: {:d}"
>>> s.format("Tom",1,30)
'Name: Tom, ID: 0001, Score: 30'
>>> s.format("Jerry",2,90)
'Name: Jerry, ID: 0002, Score: 90'
>>>
错误的用法:
>>> s = "Name: {%s}, ID: {:04d}, Score: {%d}"
>>> s.format("Tom",1,30)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: '%s'
>>> s = "Name: {:%s}, ID: {:04d}, Score: {:%d}"
>>> s.format("Tom",1,30)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: Invalid conversion specification