在字符串的最前面加r或者R可以让字符串中所有的转义字符的功能消失(每个字符都会变成普通字符)
str1 = r'C:\user\name\test\demo.py' print(str1) # C:\user\name\test\demo.py
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
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 123\t' 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','']