【Python 基础】字符串操作 - 1

处理字符串

字符串字面量

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

双引号

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

在这里插入图片描述

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

转义字符

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

在这里插入图片描述

Python 知道,因为 Bob’s 中的单引号有一个倒斜杠,所以它不是表示字符串结束的单引号。转义字符’和"让你能在字符串中加入单引号和双引号。

下表列出了可用的转义字符:

转义字符打印为
\'单引号
\"双引号
\t制表符
\n换行符
\\倒斜杠

在交互式环境中输入以下代码:

在这里插入图片描述

原始字符串

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

在这里插入图片描述

因为这是原始字符串,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.
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!')

字符串下标和切片

字符串像列表一样,使用下标和切片。可以将字符串’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:5]就是’Hello’。通过spam[0:5]得到的子字符串,将包含 spam[0]到spam[4]的全部内容,而不包括下标 5 处的空格。

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

在这里插入图片描述

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

字符串的 in 和 not in 操作符

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

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QuantumStack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值