字符串str
-
字符串:
Python
基本数据类型:是一个==不可变序列== -
由一对单引号
' '
或一对双引号" "
或由一对三单引号''' '''
或三双引号""" """
来表示 -
字符串的操作不改变原有字符串
1、字符串的操作符
操作符 | 描述 |
---|---|
+ | x+y ,连接两个字符串x 和y |
* | x*n 或n*x ,复制n次字符串x |
in | x in s ,如果x 是s 的字串,返回True ,否则返回False |
str1 = 'lijingyu'
str2 = "abcdefg"
print(str1 + str2) # lijingyuabcdefg
print(str1 * 2) # lijingyulijingyu
print('li' in str1) # True
print('xi' in str1) # False
2、字符串处理函数
函数 | 描述 |
---|---|
len(x) | 返回字符串x 的长度,也可返回其它组合数据类型元素的个数 |
str(x) | 返回任意类型x 所对应的字符串形式 |
print(len(str1)) # 8
print(len('abc' * 3)) # 8
print(str(12.3), type(str(12.3))) # 12.3 <class 'str'>
print(str(12)) # 12
print(str(True), type(str(True))) # True <class 'str'>
3、字符串处理方法
方法 | 描述 |
---|---|
s.lower() | 字符串s 全部转为小写 |
s.upper( ) | 字符串s 全部转为大写 |
s.count(sub) | 返回字串sub 出现的次数 |
s.strip(chars) | 从字符串s 中去掉其左侧和右侧chars 中出现的字符 |
str1 = 'ddAdB,CD ef,ghaabcd'
print(str1.lower()) # ddadb,cd ef,ghaabcd
print(str1.upper()) # DDADB,CD EF,GHAABCD
print(str1.count('a')) # 2
print(str1.strip('d')) # AdB,CD ef,ghaabc
4、字符串的查询
方法名称 | 作用 |
---|---|
index() | 查找字串substr 第一次出现的位置,如果查找的字串不存在,抛ValueError 异常 |
rindex() | 查找字串substr 最后一次出现的位置,如果查找的字串不存在,抛ValueError 异常 |
find() | 查找字串substr 第一次出现的位置,如果查找的字串不存在,返回-1 |
rfind() | 查找字串substr 最后一次出现的位置,如果查找的字串不存在,返回-1 |
str1 = 'ddAdB,CD ef,ghaabcd'
print(str1.index('dd')) # 0
# print(str1.index('ddd')) # substring not found
print(str1.rindex('d')) # 18
# print(str1.rindex('ddd')) # substring not found
print(str1.find('dd')) # 0
print(str1.find('ddd')) # -1
print(str1.rfind('d')) # 18
print(str1.rfind('ddd')) # -1
5、字符串的拆分
方法 | 作用 |
---|---|
split() | 返回字符串中的单词列表,使用sep 作为分隔符字符串。sep 用来分割字符串的分隔符。None(默认值)表示根据任何空格进行分割,并从结果中丢弃空字符串。maxsplit 最大分割次数。-1 (默认值)表示无限制。 |
rsplit() | 返回字符串中的单词列表,使用sep 作为分隔符字符串。sep 用来分割字符串的分隔符。None (默认值)表示根据任何空格进行分割,并从结果中丢弃空字符串。maxsplit 最大分割次数。-1 (默认值)表示无限制。劈叉从绳子的末端 开始,一直到前面。 |
s = 'hello#wor ld#pyth on'
print(s.split()) # ['hello#wor', 'ld#pyth', 'on']
print(s.rsplit()) # ['hello#wor', 'ld#pyth', 'on']
print(s.split(sep='#')) # ['hello', 'wor ld', 'pyth on']
print(s.rsplit(sep='#')) # ['hello', 'wor ld', 'pyth on']
print(s.split(sep='#', maxsplit=1)) # ['hello', 'wor ld#pyth on']
print(s.rsplit(sep='#', maxsplit=1)) # ['hello#wor ld', 'pyth on']
6、字符串的替换与合并
方法 | 作用 |
---|---|
replace() | 返回一个副本,其中所有出现的子字符串old 都被new 替换。count 替换的最大次数。-1 (默认值)表示替换所有匹配项。如果给出了可选参数count ,则只出现第一个count 更换。 |
join() | 连接任意数量的字符串。调用其方法的字符串被插入到每个给定字符串之间。结果以新字符串的形式返回。例如: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs' |
s = 'hello#wor ld#pyth on'
print(s.replace('#', '@')) # hello@wor ld@pyth on
print(s.replace('#', '@', 1)) # hello@wor ld#pyth on
s1 = 'hi'
print(s1.join('abc')) # ahibhic
7、 字符串的切片
对字符串中某个子串或区间的检索称为切片。
语法如下:字符串或字符串变量[N:M]
切片获取字符串N
到M
(不包含M
)的子字符串,其中,N
和M
为字符串的索引序号,可以混合使用正向递增序号和反向递减序号。切片要求N
和M
都在字符串的索引区间,如果N
大于M
,则返回空字符串。如果N
缺失,则默认将N
设为0
;如果M
缺失,则默认表示到字符串结尾。
# [起始值:终止值:步长] 包含起始值,不包含终止值,步长默认值为1
print(str9[0:3]) # 正下标的切片
print(str9[-5:-2]) # 负下标的切片
print(str9[:3]) # 起始值不写,表示从头开始取值
print(str9[3:]) # 终止值不写,表示从起始值开始,后面全取
print(str9[:]) # 起始值和终止值都不写,全取
print(str9[::2]) # 步长为n时,表示每n位取一次值
# 步长为负数时,从右向左取值
# 步长为负数代表着从右向左取值,所以起始值大于终止值才能取到值
# 起始值与终止值的正负不影响方向,步长的正负影响方向
print(str9[::-1])
print(str9[2::-1]) # 取cba的值
8、格式化字符串
%
作为占位符{}
作为占位符’'.format()f
‘我叫%s
,今年%d
岁了’%s
占了一个字符串%d
占了一个整数
name = '张三'
age = 20
print('我叫%s,今年%d岁了' % (name, age)) # % 作为占位符
print('我的名字是{0},我今年{1}岁了'.format(name, age)) # {} 作为占位符
print(f'我叫{name},今年{age}岁')
# 表示宽度 %10d
print('%10d' % 99)
# 表示小数点位数 %.nf 精度 :.n
print('%.3f' % 3.78234685) # 三位小数
print('{:.3}'.format(3.34638567)) # 三位有效数字