在字符串的最前面加r或者R可以让字符串中所有的转义字符的功能消失 每个字符都会变成普通字符
str1 r C:usernametestdemo.py print(str1) # C:usernametestdemo.py2.字符串格式化
1.字符串拼接
name 小张 age 19 message name 今年 str(age) 岁 print(message)
2.格式化字符串
语法 包含格式占位符的字符串 % 数据1 数据2 ... 格式占位符 %s - 字符串占位符 在Python中可以给任何数据占位 %d - 整数占位符 %f - 浮点数占位符 %.Nf - 保留N个小数占位符
# 1)%s可以给任何数据类型的数据占位 str1 %s嘻嘻嘻嘻 %([10, 20]) print(str1) # 2)%d可以给任何能转换成数字的数据占位 str1 %d - xxxx %5 print(str1) # 5-xxxx str1 %d- xxxx 5.14 print(str1) # 5.14-xxxx # 3)%f可以给任何能转换成数字的数据占位 str1 %f-wwww %3 print(str1) # 3.000000-wwww str1 %f-wwww %3.14 print(str1) # 3.140000-wwww str1 余额—— %.2f %4364 print(str1) # 余额—— 4364.00
3f-string
1 基本用法
语法 f {任何有结果的表达式} - 用表达式的结果来填充{}所在的位置
2 加参数
语法 f {r任何有结果的表达式:参数}
参数 .Nf - 控制小数位数
- 逗号分隔银行金额的格式
.N% - 显示百分比 将数据转换成百分比 比值保留N位小数
X N:将数据转换成长度为N的字符串 不够在前面用X对应的字符来填充
X N:将数据转换成长度为N的字符串 不够在后面用X对应的字符来填充
# 1)基本用法
str1 f 是哈哈n123
print(str1)
name 小张
age 19
str1 f {name}今年{age}岁 {age*10}-{name[-1]}
print(str1)
# 2)参数
# a. .Nf
money 2305
str1 f 金额 {money:.2f}元
print(str1) # 金额 2305.00元
# b. ,
money 2349000
str1 f 金额 {money:,}
print(str1) # 金额 2 349 000元
# c.%
rate 0.5
str1 f 市场占有率 {rate:.%}
print(str1) # 市场占有率 50.000000%
str1 f 市场占有率 {rate:.2%}
print(str1) # 市场占有率 50.00%
#d. X N X N
# 、 - 决定填充的时候是填在前面还是后面 开口朝那填那边
# X - 填充字符
# N - 目标长度
num 23
str1 f Python2106{num:0 3}
print(str1) # Python2106023
3.字符串相关方法
1.字符串.capitalize() - 将字符串首字母转换为大写 其余转换为小写 如果首字母不是大写字母或者不是字母 则不会转
2.center、rjust、ljust、zfill
字符串.center(长度 填充字符) - 例如 abc .center(7, x ) - xxabcxx 字符串.rjust(长度 填充字符) - 例如 abc .rjust(7, x ) - xxxxabc 字符串.ljust(长度 填充字符) - 例如 abc .ljust(7, x ) - abcxxxx 字符串.zfill(长度) 字符串.rjust(长度 0 ) - 例如 abc .zfill(7) - 0000abc
str1 weixiaoqin print(str1.center(16, * )) # ***weixiaoqin*** print(str1.rjust(16, * )) # ******weixiaoqin print(str1.ljust(16, * )) # weixiaoqin****** print(str1.zfill(16)) # 000000weixiaoqin
3.find、index
字符串1.find(字符串2) - 获取字符串1中字符串2第一次出现的位置 返回0开始的下标值 如果字符串2不存在返回-1 字符串1.index(字符串2) - 获取字符串1中字符串2第一次出现的位置 返回0开始的下标值 如果字符串2不存在就会报错 字符串1.find(字符串2 开始下边 结束下标)、字符串1.index(字符串2 开始下边 结束下标)index
str1 how are you? i am fine,thank you,and you? print(str1.fill( you )) # 8 print(str1.index( you )) # 8 print(str1.find( you , 9, len(str1))) # 29 print(str1.index( you , 9, len(str1))) # 29
5.isdigit、isnumeric
字符串1.isdigit() - 判断是否是纯数字字符串 数字指0 ~ 9的数字字符 字符串1.isnumeric() - 判断是否是纯数字字符串 数字指的是具有数字意义的字符
print( 1234 .isdigit()) # True print( 1456 .isnumeric()) # True print( 23一十百千 .isdigit()) # False print( 23一十百千 .isnumeric()) # True
6.字符串.islower()、isupper
字符串.islower() - 判断字符串是否是纯小写字母字符串 字符串.isupper() - 判断字符串是否是纯大写字母字符串
print( weffd .islower()) # True print( WFDsdf .islower()) # False print( AHDHFJ .isupper()) # True print( ADSDcdd .isupper()) # False
7.(重要) join
字符串.join(序列) - 将序列中的元素用指定的字符串拼接成一个新的字符串 注意 序列中的元素必须是字符串
result .join( abc ) print(result) # abc result , .join( abc ) print(result) # a,b,c result .join([ 小明 , 张三 , 李四 ]) print(result) # 小明张三李四 result .join([ 小明 , 张三 , 李四 ]) print(result) # 小明 张三 李四
# # 练习1 将列表中的元素合并成一个字符串
# list1 [ abc , 100, 12.5, True, hello ] - abc10012.5Truehello
list1 [ abc , 100, 12.5, True, hello ]
list2 [str(x) for x in list1]
print( .join(list2))
# 练习2 已知一个列表保存多个学生的分数 提取所有学生的姓名
# 以一个字符串的形式返回
# [{ name : 张三 , age : 18}, { name : 小明 , age : 20}, { name : 小花 , age : 30}] - 张三,小明,小花
list1 [{ name : 张三 , age : 18}, { name : 小明 , age : 20}, { name : 小花 , age : 30}]
list2 [x[ name ] for x in list1]
print( , .join(list2))
8.strip、lstrip、rstrip
字符串.strip() - 去掉字符串两端的空白 字符串.lstrip() - 去掉字符串左边的空白字符 字符串.rstrip() - 去掉字符串右边的空白字符
str1 tabc 123t result str1.strip() print( ,result, ,sep ) print( ,str1.rstrip(), ,sep ) print( ,str1.lstrip(), ,sep )
9.replace
字符串1.replace(字符串2 字符串3) - 将字符串1中的字符串2替换成字符串3 字符串1.replace(字符串2 字符串3 N) - 将字符串1中所有的前N个字符串2替换成字符出3
str1 how are you? i am fine,thank you,and you? result str1.replace( you , me ) print(result) # how are me? i am fine,thank me,and me? result str1.replace( you , me , 2) print(result) # how are me? i am fine,thank me,and you?
10.maketrans、translate
str.maketrans(字符串1 字符串2) - 创建一张字符串1和字符串2的字符对应表 字符串1和字符串2长度必须相同
str1 how are you? i am fine,thank you,and you? table str.maketrans( ain , 你我他 ) result str1.translate(table) print(result) # how 你re you? 我 你m f我他e,th你他k you,你他d you?
11.rfind、rindex
字符串.rfind(字符串2) - 获取字符串1中字符串2从后往前第一次出现的位置 返回0开始的下标值;如果字符串2不存在返回-1 str1 how are you? i am fine,thank you,and you? print(str1.rfind( you )) # 37 print(str1.find( you )) # 8 print(str1.rindex( you )) # 8 print(str1.index( you )) # 37
12.splict
字符串1.splict(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串进行切割 返回一个新的列表 切割点切完后将不存在
str1 how are you? i am fine,thank you,and you? result str1.splict( an ) print(result) # [ how are you? i am fine,th , k you, , d you? ] result str1.splict( you ) print(result) #[ how are , ? i am fine,thank , ,and , ? ]
注意· 如果切割点在最前面或者最后面或者出现连续的切割点 结果会出现空串
str4 amnayouaa a123aklpa print(str4.splict( a )) # [ , mn , you , , , 123 , klp , ]



