当前位置:嗨网首页>书籍在线阅读

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列出了可用的转义字符。

表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!')