返回介绍

6.1 处理字符串

发布于 2024-01-22 21:44:06 字数 3888 浏览 0 评论 0 收藏 0

让我们来看看,Python提供的写入、打印和访问字符串的一些方法。

6.1.1 字符串字面量

在Python中输入字符串值相当简单的:它们以单引号开始和结束。但是如何才能在字符串内使用单引号呢?输入'That is Alice's cat.'是不行的,因为Python认为这个字符串在Alice之后就结束了,剩下的(s cat.')是无效的Python代码。好在,有几种方法来输入字符串。

6.1.2 双引号

字符串可以用双引号开始和结束,就像用单引号一样。使用双引号的一个好处,就是字符串中可以使用单引号字符。在交互式环境中输入以下代码:

>>> spam = "That is Alice's cat."

因为字符串以双引号开始,所以Python知道单引号是字符串的一部分,而不是表示字符串的结束。但是,如果在字符串中既需要使用单引号又需要使用双引号,那就要使用转义字符。

6.1.3 转义字符

“转义字符”让你输入一些字符,它们用其他方式是不可能放在字符串里的。转义字符包含一个倒斜杠(\),紧跟着是想要添加到字符串中的字符。(尽管它包含两个字符,但大家公认它是一个转义字符。)例如,单引号的转义字符是\’。你可以在单引号开始和结束的字符串中使用它。为了看看转义字符的效果,在交互式环境中输入以下代码:

>>> 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.

6.1.4 原始字符串

可以在字符串开始的引号之前加上r,使它成为原始字符串。“原始字符串”完全忽略所有的转义字符,打印出字符串中所有的倒斜杠。例如,在交互式环境中输入以下代码:

>>> print(r'That is Carol\'s cat.')
That is Carol\'s cat.

因为这是原始字符串,Python认为倒斜杠是字符串的一部分,而不是转义字符的开始。如果输入的字符串包含许多倒斜杠,比如下一章中要介绍的正则表达式字符串,那么原始字符串就很有用。

6.1.5 用三重引号的多行字符串

虽然可以用\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')

6.1.6 多行注释

虽然井号字符(#)表示这一行是注释,但多行字符串常常用作多行注释。下面是完全有效的Python代码:

"""This is a test Python program.
Written by Al Sweigart al@inventwithpython.com

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

6.1.7 字符串下标和切片

字符串像列表一样,使用下标和切片。可以将字符串'Hello world!'看成是一个列表,字符串中的每个字符都是一个表项,有对应的下标。

'  H  e  l  l  o  w  o  r  l  d   !   '
    0  1  2  3  4  5  6  7  8  9  10 11

字符计数包含了空格和感叹号,所以'Hello world!'有12个字符,H的下标是0,!的下标是11。在交互式环境中输入以下代码:

>>> spam = 'Hello world!'
>>> spam[0]
'H'
>>> spam[4]
'o'
>>> spam[-1]
'!'
>>> spam[0:5]
'Hello'
>>> spam[:5]
'Hello'
>>> spam[6:]
'world!'

如果指定一个下标,你将得到字符串在该处的字符。如果用一个下标和另一个下标指定一个范围,开始下标将被包含,结束下标则不包含。因此,如果spam是'Hello world!',spam[0:5]就是'Hello'。通过spam[0:5]得到的子字符串,将包含spam[0]到spam[4]的全部内容,而不包括下标5处的空格。

请注意,字符串切片并没有修改原来的字符串。可以从一个变量中获取切片,记录在另一个变量中。在交互式环境中输入以下代码:

>>> spam = 'Hello world!'
>>> fizz = spam[0:5]
>>> fizz
'Hello'

通过切片并将结果子字符串保存在另一个变量中,就可以同时拥有完整的字符串和子字符串,便于快速简单的访问。

6.1.8 字符串的in和not in操作符

像列表一样,in和not in操作符也可以用于字符串。用in或not in连接两个字符串得到的表达式,将求值为布尔值True或False。在交互式环境中输入以下代码:

>>> 'Hello' in 'Hello World'
True
>>> 'Hello' in 'Hello'
True
>>> 'HELLO' in 'Hello World'
False
>>> '' in 'spam'
True
>>> 'cats' not in 'cats and dogs'
False

这些表达式测试第一个字符串(精确匹配,区分大小写)是否在第二个字符串中。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文