文章目录
什么是字符串?
在Python中,加了引号的字符都被认为是字符串。
name_1 = 'Old Wang' # 使用单引号创建字符串
name_2 = "Old Wang" # 使用双引号创建字符串
name_3 = '''Old Wang''' # 使用三个单引号创建字符串
name_4 = """Old Wang""" # 使用三个双引号创建字符串
从上面的例子可以看出,单引号、双引号、三个单引号、三个双引号都可以用来创建字符串,那平时写代码的时候到底用哪个呢?
-
如果字符串的内容只有一行,那考虑用单引号或者双引号。
-
如果字符串的文本里包含单引号,比如
Hello, I'm Old Wang.
,那么创建字符串的时候就需要用双引号。string_example = "Hello, I'm Old Wang"
-
如果字符串的文本里包含双引号,比如
他说:"大家好,我是老王"
,那么创建字符串的时候就需要用双引号。string_example = '他说:"大家好,我是老王"'
-
-
如果字符串的内容有多行,那考虑用三个单引号(
'''
)或者三个双引号("""
)string_example = """这是一个多行注释, 这是第一行, 这是第二行, 这是第三行 """
string_example = '''这是一个多行注释, 这是第一行, 这是第二行, 这是第三行 '''
字符串运算
字符串拼接
使用加号+
可以把两个字符串拼接起来,例如:
string_1 = "我是第一个字符串。"
string_2 = "我是第二个字符串。"
string_3 = string_1 + string_2 # 字符串变量string_3等于将string_1和string_2两个字符串拼接起来
print(string_3)
重复输出字符串
如果我们要创建一个有规律的字符串,比如:12341234123412341234
(1234
重复5次),那么可以用乘号*
运算符快速生成,例如:
string_example = "1234" * 5
print(string_example)
提取字符串的一个或者一段字符
假设有一个字符串:1. 疫情期间禁止串门。
,我们现在想要提取1
和串门
这两个信息(1
表明这是第几条,串门
表明禁止的行为),该怎么办?
要搞定这个问题,首先要知道一个概念:索引。
Python对字符串的每个字符都有一个标号,称为索引或下标,用于表明字符在整个字符串中的位置,例如:
- 索引是有方向的,正向索引是从第一个字符开始,反向索引是从最后一个字符开始。
- 正向索引时,索引值(或下标)是从0开始的,也就是说,第一个字符的索引值是0。
- 反向索引使,索引值(或下标)是从**-1**开始的,也就是说,最后一个字符的索引值是-1。
- 空格也算一个字符。
如果想要提取字符串变量中的某一个字符,可以采用变量名[下标]
的形式,例如:
如果想要提取字符串变量中的某一段字符,可以采用变量名[起始下标:截止下标+1]
的形式,例如我们要提取串门
这两个字符,起始下标就是串
这个字符的下标9,截止下标就是门
这个字符的下标10,编码如下:
判断字符串中是否包含某个或者某段特定字符
假设有一个字符串:大家好,我是老王
,我们想通过程序判断一下这个字符串里是不是包含老王
这个词,那么可以使用in
运算符,例如:
你看,因为字符串里包含老王
这个词,所以,使用in
运算符判定的结果就是True
,表明老王
在字符串里。
同时,还有一个not in
运算符:
not in
的意思是:老王
是不是不在给定字符串里,如果不在,那么运行的结果就是True
,如果在,那么运行结果就是False
。
确认某个或某段字符在字符串中的位置
如果一个字符串很长,我们需要确认某个字符或者某一段字符在整个字符串的位置,难道我们只能傻傻的手动查吗?万一这个字符串有几百个字符,那岂不是很坑?
Python的字符串提供了一个称为index()
的方法,官方说明如下:
Help on built-in function index:
index(...) method of builtins.str instance
S.index(sub[, start[, end]]) -> int
Return the lowest index in S where substring sub is found,
such that sub is contained within S[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Raises ValueError when the substring is not found.
这个index()
的功能如下:
- 在指定的字符串中查询给定的某一个字符或者某一段字符的位置,也就是第一次出现时对应的下标。
- 默认情况下,它是从字符串的第一个字符开始查找的,而且查到第一个符合条件的字符就停止查找了。
- 如果要查找的字符在该字符串中不存在,则程序运行会出错。
- 可以指定在字符串的某个位置开始查找(默认是从第一个字符的位置开始查找)。
- 可以指定查找到哪一个位置结束(默认情况下,如果一直没有找到符合条件的字符,那么
index
一直会查找到整个字符串的最后一个字符)。
为了避免程序运行出错,这个index()
方法最好和in
运算配合使用,先试用in
判断要查找的字符是否包含在字符串中,如果不包含,那就没有使用index()
的必要了。
如果我们想要在疫情期间禁止串门
这一段字符中查找禁止
这两个字符的位置,应该怎么办?从上图中,我们知道疫
字的下标是3,门
字的下标是10,那么可以使用下面的方法: