03-字符串字面量
6.1.1 字符串字面量
在Python中输入字符串值相当简单:它们以单引号开始和结束。但是如何才能在字符串内使用单引号呢?输入 'That is Alice's cat.'
是不行的,因为Python认为这个字符串在 Alice
之后就结束了,剩下的( s cat.'
)是无效的Python代码。好在,有几种方法来输入字符串。
双引号
字符串可以用双引号开始和结束,就像用单引号一样。使用双引号的一个好处就是字符串中可以使用单引号字符。在交互式环境中输入以下代码:
>>> spam = "That is Alice's cat."
因为字符串以双引号开始,所以Python知道单引号是字符串的一部分,而不是表示字符串的结束。但是,如果在字符串中既需要使用单引号,又需要使用双引号,那就要使用转义字符。
转义字符
“转义字符”可以让你输入一些字符,这些字符用其他方式是不可能放在字符串里的。转义字符包含一个倒斜杠(\),紧跟着是想要添加到字符串中的字符。(尽管它包含两个字符,但大家公认它是一个转义字符。)例如,单引号的转义字符是\',你可以在以单引号开始和结束的字符串中使用它。为了查看转义字符的效果,在交互式环境中输入以下代码:
>>> spam = 'Say hi to Bob\'s mother.'
Python知道,因为Bob\'s中的单引号前有一个倒斜杠,所以它不是表示字符串结束的单引号。转义字符\'和\"让你能在字符串中加入单引号和双引号。
表6-1列出了可用的转义字符。
| 转义字符 | 输出为 | | :----- | :----- | :----- | :----- | | \' | 单引号 | | \" | 双引号 | | \t | 制表符 | | \n | 换行符 | | \ | 倒斜杠 |
在交互式环境中输入以下代码:
>>> print("Hello there!\nHow are you?\nI\'m doing fine.")
Hello there!
How are you?
I'm doing fine.
原始字符串
可以在字符串开始的引号之前加上 r
,使它成为原始字符串。“原始字符串”完全忽略所有的转义字符,可输出字符串中所有的倒斜杠。例如,在交互式环境中输入以下代码:
>>> print(r'That is Carol\'s cat.')
That is Carol\'s cat.
因为这是原始字符串,所以Python认为倒斜杠是字符串的一部分,而不是转义字符的开始。如果输入的字符串包含许多倒斜杠,例如下一章中要介绍的正则表达式字符串,那么原始字符串就很有用。
用三重引号的多行字符串
虽然可以用 \n
转义字符将换行符放入一个字符串,但使用多行字符串通常更容易。在Python中,多行字符串用3个单引号或3个双引号包围(开始和结尾处均有)。“三重引号”之间的所有引号、制表符或换行符,都被认为是字符串的一部分。Python的代码块缩进规则不适用于多行字符串。
打开文件编辑器,输入以下代码:
print('''Dear Alice,
Eve's cat has been arrested for catnapping, cat burglary, and extortion.
Sincerely,
Bob''')
将该程序保存为catnapping.py并运行。输出结果看起来像这样:
Dear Alice,
Eve's cat has been arrested for catnapping, cat burglary, and extortion.
Sincerely,
Bob
请注意,Eve's中的单引号字符不需要转义。在原始字符串中,转义单引号和双引号是可选的。下面的 print()
调用将输出同样的文本,但没有使用多行字符串:
print('Dear Alice,\n\nEve\'s cat has been arrested for catnapping, cat
burglary, and extortion.\n\nSincerely,\nBob')
多行注释
井号字符(#)用于单行注释,多行字符串常常用作多行注释。下面是完全有效的Python代码:
"""This is a test Python program.
Written by Al Sweigart [email protected]
This program was designed for Python 3, not Python 2.
"""
def spam():
"""This is a multiline comment to help
explain what the spam() function does."""
print('Hello!')