python字符串相关函数及方法
补充:
r语法:如果在一个字符串的最前面加r/R,可以让字符中所有的转义字符功能消失,每个字符都变成普通字符。
字符串相关函数
len(字符串) - 计算字符串中字符个数。
str(数据) - 将指定数据转换成字符串,任何类型数据都可以转换成字符串,转换时直接在数据的打印值外加引号。
eval(字符串) - 计算字符串表达式的结果。
字符串相关方法
1.join
字符串.join(序列) - 将序列中的元素用指定字符串拼接,拼接处是一个字符串,序列中元素必须是字符串。
list1 = ['1', '2', '3']
result = '+'.join(list1)
print(result)
# 1+2+3
2.split
字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串1进行切割;
字符串1.split(字符串2, N) - 将字符串1中前N个字符串2作为切割点对字符串1进行切割;
字符串1.rsplit(字符串2, N) - 将字符串1倒数N个字符串2作为切割点对字符串1进行切割。
注意:切割点在切割后会消失;切割点在开头、结尾或者切割点连续切割会切割出空串。
str1 = '*qw**12*'
print(str1.split('*'))
# ['', 'qw', '', '12', '']
print(str1.split('*', 3))
# ['', 'qw', '', '12*']
print(str1.rsplit('*', 2))
# ['*qw*', '12', '']
3.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?'
r = str1.replace('you', 'me')
print(r)
# how are me? i am fine, thank me! and me?
r = str1.replace('you', 'me', 2)
print(r)
# how are me? i am fine, thank me! and you?
4.替换字符
str.maketrans(字符串1,字符串2) - 创建字符串1中所有字符和字符串2中所有字符一一对应对映表;
字符串.translate(字符对映表) - 按照字符对映表的关系将字符中的字符进行替换。
str1 = '星期7,星期1'
table = str.maketrans('1234567', '一二三四五六天')
result = str1.translate(table)
print(result)
# 星期天,星期一
5.删除字符串两端的空白
字符串.strip() - 删除字符串两边的空白;
字符串.rstrip() - 删除字符串右边的空白;
字符串.lstrip() - 删除字符串左边的空白。
str1 = '\t \n 123 \n\n'
print(str1)
print('=========')
print(str1.strip())
print('=========')
print(str1.rstrip())
print('=========')
print(str1.lstrip())
print('=========')
str2 = 'asd'
print(str2.strip('/'))
'''
123
=========
123
=========
123
=========
123
=========
asd
'''
6.count - 统计个数
字符串1.count(字符串2) - 统计字符串1中字符串2出现的次数。
str1 = '123adwd23asfe?a'
print(str1.count('a'))
# 3
print(str1.count('23'))
# 2
7.center、rjust、ljust
字符串.center(N,字符)、字符串.rjust(N,字符)、字符串.ljust(N,字符)
字符串.zfill(N) == 字符串.rjust(N,‘0’)
8.find、index、rfind、rindex
字符串1.find(字符串2) - 获取字符串1中字符串2首次出现的位置下标,如何字符串1中没有字符串2,返回-1;
字符串1.index(字符串2) - 获取字符串1中字符串2首次出现的位置下标,如何字符串1中没有字符串2,报错;
字符串1.rfind(字符串2) - 获取字符串1中字符串2最后出现的位置下标;
字符串1.rindex(字符串2) - 获取字符串1中字符串2最后出现的位置下标;
str1 = '123adwd23asfe?a'
print(str1.find('a')) # 3
print(str1.rfind('a')) # 14
print(str1.index('a')) # 3
print(str1.rindex('a')) # 14
print(str1.find('7')) # -1
print(str1.index('7')) # 报错
9.isdigit、isnumeric- 判断是否是纯数字字符串
字符串.isdigit() - 字符只能是数字字符(0~9)
字符串.isnumeric() - 数字字符:字符的意义是表示一个数值的字符,必须是一个字符
print('123'.isdigit()) # True
print('123一十百万千ⅠⅤ壹'.isnumeric()) # True
问题:字符串的内容不确定怎么办?
1.方案一:字符串拼接
name = '小明'
age = 18
message = name + '今年' + str(age) + '岁!'
print(message) # 小明今年18岁!
2.方案二:格式字符串
格式字符串:含有格式占位符的字符串%(数据1,数据2,数据3,…)。
注意:()中数据必须和字符串中占位符一一对应。
1)格式字符串 包含格式占位符的字符串%(数据1,数据2,数据3,…)
注意:()中数据必须和字符串中占位符一一对应
2)格式占位符
%s - 字符串占位符,可以对应任何类型的数据
%d - 整数占位符,可以对应任何数字
%f - 浮点数占位符,可以对应任何数字,会在后加(.0),一般保留6位小数
%.Nf - 浮点数占位符,可以对应任何数字,让数字保留N位小数
建议:如果不控制小数位数可以全部使用%s占位
name = '小明'
age = 18
money = 18000.8
gender = '男'
message = '%s, 性别:%s, 年龄:%d, 月薪: %.2f元!' % (name, gender, age, money)
print(message)
# 小明, 性别:男, 年龄:18, 月薪: 18000.80元!
3.方案三 f-string
1)语法:f’{表达式}’ - 将{}中表达式的值作为字符串内容拼接到字符串中。
2)加参数:f’提供数据表达式:参数’
a.控制小数位数的参数;f’{表达式:.Nf}’ - 保留N位小数
b.金额数值显示加逗号
只加逗号:f’{表达式:,}’
加逗号并且控制小数位数:f’{表达式:,.Nf}’
c.显示百分比:f’{表达式:.N%}’ - N控制百分数的小数位数
d.控制长度
f’{表达式:字符>N}’ - 在表达式前加N个字符
f’{表达式:字符<N}'- 在表达式后加N个字符
name = '小明'
age = 18
money = 18000.8
gender = '男'
Body_fat = 0.25
tel = 133
message = f'{name}, 性别:{gender}, 年龄:{age}, 月薪:{money:,.2f}元!,体脂{Body_fat:,3%,电话{tel:6>7}'
print(message)
# 小明, 性别:男, 年龄:18, 月薪:18,000.80元!,体脂25.000%,电话6666133