字符串相关函数和相关方法
相关函数:len、str、eval
1.str(数据) - 将指定数据转换成字符串(转的时候是直接在数据的打印值外面加引号)
str(100) #'100'
str(True) #'True'
list1 = [10,20,30]
str(list1) #'[10, 20, 30]'
2.eval(字符串) - 计算字符串表达式的结果
‘[10, 20, 30]’ -> [10, 20, 30]
str1 = '[10, 20, 30]'
result = eval(str1)
print(result) #[10, 20, 30]
相关方法
1.字符串.join()
字符串.join(序列) - 将序列中的元素用指定字符串拼接成一个字符串(序列中的元素必须是字符串)
‘a’.join()
练习1:将列表list1中所有的元素用#连接成一个字符串
list1 = [100, 12.8, True, 'abc']
result = '#'.join(str(x) for x in list1)
#'100#12.8#True#abc'
list2 = []
for i in list1:
list2.append(str(i))
list1 = '#'.join(list2)
print(list1)
print(result)
练习2:将列表list1中所有的数字数据用#连接成一个字符串
list1 = [100, 12.8, True, 'abc',4]
result = '#'.join([str(x) for x in list1 if type(x) in (int,float)])
list2 = []
for i in list1:
if type(i) == int or type(i) == float:
list2.append(str(i))
list1 = '#'.join(list2)
print(list1)
print(result)
2.split
#字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串进行切割
#字符串1.split(字符串2,N) - 将字符串1中前N个字符串2作为切割点进行切割
#字符串1.rsplit(字符串2,N) - 将字符串1中倒数N个字符串2作为切割点进行切割
str1 = '123*abc*mn'
result = str1.split('*')
print(result) #['123','abc','mn']
#注意1:如果切割点在字符串的开头或者结尾,切完后会出现空串
#注意2:如果切割点连续出现,切完后也会出现空串
str1 = '*123*abc*mn*' #['','123','abc','mn','']
reslut = str1.rsplit('*',2)
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?'
result1 = str1.replace('you','me')
print(result1)
result2 = str1.replace('you','me',2)
print(result2)
#练习:将str1中最后两个you替换成me
result = 'me'.join(str.rsplit('you',2))
print(result)
4.替换字符
#str.maketrans(字符串1,字符串2) - 创建字符串1中所有字符和字符串2中所有字符一一对应关系表
#字符串.translate(字符对映表) - 按照字符对应表的关系将字符串中的字符进行替换
str = '1234567'
table = str.maketrans('1234567','一二三四五六天')
str.translate(table)
prinr(result)
5.删除字符串两端的空白
#字符串.strip() - 删除字符串两边的空白
#字符串.rstrip() - 删除字符串右边的空白
#字符串.lstrip() - 删除字符串左边的空白
str = 'name//'
print(str.strip('/'))
6.count - 统计个数
字符串1.count(字符串2) - 统计字符串1中字符串2出现的次数
str1 = 'how are you? i am fine, thank you! and you?'
print(str1.count('0'))
print(str1.count('you'))
center、rjust、ljust、zfill
字符串.center(N,字符)、字符串.rjust(N,字符)、字符串.ljust(N,字符)
find、index、rfind、rindex
isdigit 、isnumeric - 判断是否是纯数字字符串
#isdigit - 数字字符:’0‘ -’9‘
#isnumeric - 数字字符:字符的意义是表示一个数值的字符
格式字符串
1.字符串格式化
name = input('请输入姓名:')
age = int(input('请输入年龄:'))
#xxx今年xx岁了
方案一:字符串拼接
message = name + '今年' + str(age) + '岁!'
print(message)
方案二:格式字符串
”“”
1)格式字符串:包含格式占位符的字符串 % (数据1,数据2,数据3,…)
注意:()中数据的个数必须和字符串中占位符一一对应
2)格式占位符
%s - 字符串占位符,可以对应任何类型的数据
%d - 整数占位符,可以对应任何数字
%f - 浮点占位符,可以对应任何数字
%.Nf - 浮点占位符,可以对应任何数字,让小数保留N位小数
建议:如何不控制小数位数可以全部使用%s占位
“”“
money = 18000
gender = '男'
#xxx,性别:x,年龄:xx,月薪:xxxxx.00元!
#'%s,性别:%d,年龄:%d,月薪:%f元' % (name, gender,age,money)
message = '%s,性别:%s,年龄:%d,月薪:%.2f元' % (name, gender,age,money)
print(message)
方案三:f-string
1)基本用法
#语法 f’{表达式}‘ - 将{}中表达式的值作为字符串内容拼接到字符串中
message = f'{name},性别:{gender},年龄:{age},月薪:{money}元'
print(message)
#2)加参数
f’{提供数据表达式:参数}‘
a.控制小数位的参数
f’{表达式:.Nf}’ - 保留N位小数
b.金额数值显示加逗号
只加逗号:f’{表达式:,}’
money = 1800000
result = f'金额:{money:,}元’
print(result)
加逗号并且控制小数位数
result = f'金额:{money:,.2f}元’
print(result)
c.显示百分比:f’{表达式:.N%}’ - 控制百分数的小数位数
x = 0.34
result = f'增长率:{x:.2%}'
print(result)
d.控制长度
f’{表达式:字符>N}’、f’{表达式:字符>N}’
x = ‘abc’
result = f’姓名:{x}’