字符串: 由单个字符组成的集合
形式:
-
非原始字符串: 会被转义符影响的字符串
- 使用单引号包含的:
'abc'
- 使用双引号包含的:
"abc"
- 使用三个单引号包含的:
'''abc'''
- 使用三个双引号包含的:
"""abc"""
str = '这是一个"xxx"\n他会\'xxx\'' print(str) # 打印: 这是一个"xxx" 他会'xxx'
- 使用单引号包含的:
-
原始字符串: 不会被转义符影响的字符串
- 使用单引号包含的:
r'abc'
- 使用双引号包含的:
r"abc"
- 使用三个单引号包含的:
r'''abc'''
- 使用三个双引号包含的:
r"""abc"""
str = r'这是一个"xxx"\n他会\'xxx\'' print(str) # 打印: 这是一个"xxx"\n他会\'xxx\'
- 使用单引号包含的:
-
转义符
- 概念: 通过转换某个指定的字符, 使它具备特殊的含义
-
\(写在结尾)
: 续行符
str = "wo shi"\ " xxx" print(str) # 打印: wo shi xxx
-
\'
: 单引号 -
\"
: 双引号 -
\n
: 换行符
str = "wo shi\nxxx" print(str) # 打印: wo shi xxx
-
\t
: 横向制表符
str = "wo shi\txxx" print(str) # 打印: wo shi xxx
各种形式的特点
- 单/双引号:
- 混合使用可以避免使用引号转义符
str1 = 'wo shi "xxx"' str2 = "wo shi 'xxx'" print(str1) print(str2) # 打印: wo shi "xxx" wo shi 'xxx'
- 一般需要写成一行:
str1 = "wo shi "\ "xxx" str2 = ("wo shi " "xxx")
- 三引号:
str1 = '''wo shi xxx''' print(str1) # 打印: wo shi xxx str2 = '''\ wo \ shi \ xxx''' print(str1) # 打印: wo shi xxx
- 可以用于注释
''' 这里是多行注释 这里是多行注释 这里是多行注释 '''
字符串的一般操作
- 字符串拼接
- 方式1: str1 + str2
str1 = "xxx" str2 = "ooo" print(str1 + str2) # 打印: xxxooo
- 方式2: 直接将两个字符串放在一起, 注意: 不能使用字符串变量
str = "xxx""ooo" print(str) # 打印: xxxooo
- 使用格式符
str1 = "xxx" str2 = "ooo" print("%s%s" % (str1, str2)) # 打印: xxxooo
- 字符串乘法
str = "xxxooo " * 3 print(str) # 打印: xxxooo xxxooo xxxooo
- 字符串切片
概念: 获取一个字符串的某个片段
-
获取某一个字符
name[下标]
- 下标: 字符串中每一个字符都有一个对应的编号, 且编号从0开始
str = "wo zai xue python" print(str[0], str[3], str[6]) # 打印: w z x
- 注意: 如果下标不能越界, 并且下标为负数的时候表示从尾部开始定位
str = "wo zai xue python" print(str[-1], str[-13], str[-6]) # 打印: n a p
-
获取一个片段
name[起始:结束:步长]
- 获取范围:
[起始, 结束)
, 左闭右开区间 - 默认值:
起始=0
,结束=len(str)
,步长=1
- 获取顺序, 步长>0: 从左到右, 步长<0: 从右到左
注意: 从左到右, 起始必须小于结束, 从右到左, 起始必须大于结束
```
str = "wo zai xue python"
print(str[0:6:1])
# 因为步长=1, 所以从左到右取, 此时起始对应的字母, 必须在结束对应字母的左边
# 打印:
wo zaiprint(str[13:3:-1])
因为步长=-1, 所以从右往左取, 此时起点对应的字母, 必须在结束对应字母的右边
打印:
typ eux ia
print(str[12:6:1])
此时步长=1, 从左到右取, 但是起点对应字母 在 结束对应字母的右边, 所以无法获取到子串
打印空
print(str[3:13:-1])
此时步长=-1, 从右到左取, 但是起点对应字母 在 结束对应字母的左边, 所以无法获取到子串
打印空
特殊案例: 反转字符串
str = "wo zai xue python" print(str[::-1]) # 打印: nohtyp eux iaz ow
字符串的函数操作
查找计算、转换、填充压缩、分割拼接、判定
- 查找计算
len(str): 计算字符串的字符个数, `len`函数是内置函数, 可直接使用
str: 需要计算的字符串
find(sub, start=0, end=len(str)): 查找字符串索引位置, 找不到返回-1
sub: 子串
start: 起点索引
end: 终点索引
rfind: 功能与 `find` 相同, 区别: 从右到左查找
index:(sub, start=0, end=len(str)): 获取子串索引位置, 找不到会报错
sub: 子串
start: 起点索引
end: 终点索引
rindex: 功能与 `index`, 相同, 区别:从右到左查找
count(sub, start=0, end=len(str)): 计算某个子串出现的个数
sub: 子串
start: 起点索引
end: 终点索引
- 转换
replace(old, new, count): 使用新串替换旧串, 返回新串, 有字符串不变
old: 旧串
new: 新串
count: 需要替换的个数, 默认为替换全部
capitalize(): 将字符串首字母变为大写, 返回新串, 原字符串不变
无参数
title(): 将字符串中每个单词的首字母变为大写, 返回新串, 原字符串不变
无参数
lower(): 将字符串中所有的字母变为小写, 返回新串, 原字符串不变
无参数
upper(): 将字符串中所有的字母变为大写, 返回新串, 原字符串不变
无参数
- 填充压缩
ljust(width, fillchar): 将字符串填充为指定的width长度, 不足的地方用fillchar填充
参数:
width: 指定结果字符串的长度
fillchar: 原字符串长度不足width时, 使用fillchar填充不足部分
返回值:
新串
注意:
fillchar必须是长度为1的字符
只有原有字符串不足width时才会填充
不会修改原字符串
*当需要填充时, 原有字符换靠左, 补充的字符靠右
rjust(width, fillchar): 将字符串填充为指定的width长度, 不足的地方用fillchar填充
参数:
width: 指定结果字符串的长度
fillchar: 原字符串长度不足width时, 使用fillchar填充不足部分
返回值:
新串
注意:
fillchar必须是长度为1的字符
只有原有字符串不足width时才会填充
不会修改原字符串
*当需要填充时, 原有字符换靠右, 补充的字符靠左
center(width, fillchar): 将字符串填充为指定的width长度, 不足的地方用fillchar填充
参数:
width: 指定结果字符串的长度
fillchar: 原字符串长度不足width时, 使用fillchar填充不足部分
返回值:
新串
注意:
fillchar必须是长度为1的字符
只有原有字符串不足width时才会填充
不会修改原字符串
*当需要填充时, 原有字符换居中, 如果需要填充个数为奇数, 则先填充右边, 再填充左边
lstrip(chars): 移除原字符串左侧所有的指定字符, 默认为空白字符
参数:
chars: 字符集
返回值:
新串
注意:
chars表示的字符集的形式: "abc" -> "a"|"b"|"c"
每一个字符单独使用, 只要字符串左边出现了abc中的任意一种, 都会被移除, 一直到chars中不包含的字符位置
不会修改原有字符串
rstrip(chars): 移除原字符串右侧所有的指定字符, 默认为空白字符
参数:
chars: 字符集
返回值:
新串
注意:
chars表示的字符集的形式: "abc" -> "a"|"b"|"c"
每一个字符单独使用, 只要字符串右边出现了abc中的任意一种, 都会被移除, 一直到chars中不包含的字符位置
不会修改原有字符串
- 分割拼接
split(sep, maxsplit):讲一个大的字符串分割为几个子字符串
参数:
sep: 分隔符
maxsplit: 分割次数, 默认为有多少分割多少
返回值:
分割后的子字符串组成的列表
注意:
不会修改原字符串
partition(sep): 将字符串根据sep进行分割
参数:
sep: 分隔符
返回值:
如果找到, 返回(分隔符左侧内容, 分隔符, 分隔符右侧内容)
如果没找到, 返回(原字符串, "", "")
注意:
不会修改原字符串
从左侧查找分隔符
rpartition(sep): 将字符串根据sep进行分割
参数:
sep: 分隔符
返回值:
如果找到, 返回(分隔符左侧内容, 分隔符, 分隔符右侧内容)
如果没找到, 返回("", "", 原字符串)
注意:
不会修改原字符串
从右侧查找分隔符
splitlines(keepends): 根据换行符(\r, \n)将字符串分割为多个子串
参数:
keepends: 布尔类型, 分割后的子串是否保留分隔符
返回值:
被换行符分割的多个字串, 组成的列表
注意:
不会修改原字符串
join(iterable): 将可迭代对象通过指定的字符串进行拼接, 得到拼接后的字符串
参数:
iterable: 可迭代对象, 例如字符串, 数组, 元组等
返回值:
拼接好的字符串
代码案例:
str = "abc"
print("-".join(str)) # 打印: a-b-c
- 判定
isalpha(): 判断字符串中是否所有的字符都是字母, 不区分大小写
参数:
无
返回值:
布尔类型, 是否全是字符
注意:
被判断的字符串, 至少有一个字符
isdigit():判断字符串中是否所有的字符都是数字
参数:
无
返回值:
布尔类型, 是否全是数字
注意:
被判断的字符串, 至少有一个字符
isalnum():判断字符串中是否所有的字符都是数字或者字母
参数:
无
返回值:
布尔类型, 是否全是数字或者字母
注意:
被判断的字符串, 至少有一个字符
isspace(): 字符串中是否所有的字符都是空白符
参数:
无
返回值:
布尔类型, 是否全是空白符
注意:
被判断的字符串, 至少有一个字符
startswith(prefix, start=0, end=len(str)): 判定一个字符串是否已prefix字符串开头
参数:
prefix: 需要判定的开头字符串
start: 起点索引, 默认值0
end: 终点所有, 默认值len(str)
返回值:
布尔类型, 字符串是否以指定字符串开头
endswith(prefix, start=0, end=len(str)): 判定一个字符串是否已prefix字符串结尾
参数:
prefix: 需要判定的结尾字符串
start: 起点索引, 默认值0
end: 终点所有, 默认值len(str)
返回值:
布尔类型, 字符串是否以指定字符串结尾
in: 语句, 判定一个字符串是否被另一个字符串包含
代码案例
result = "abc" in "abcdefg"
print(result) # 打印: True
not in: 语句, 判定一个字符串是否不被另一个字符串包含
代码案例
result = "abc" not in "abcdefg"
print(result) # 打印: False