day10学习总结:
1. 字符串
-
join操作:字符串.join(序列),将序列中的元素用指定的字符串拼接在一起,形成一个新的字符串(序列中的元素必须是字符串)
-
注意:如果需要join的序列中的元素不是字符串,就想办法把它的元素变成字符串再join
list1 = ['wusong', 'pim'] result = '+'.join(list1) print(result) # wusong+pim nums = [23, 45, 67, 89, 45] result = '+'.join([str(x) for x nums]) print(result) # 23+45+67+89+45 result = '*'.join('abc') print(result) # a*b*c
-
-
split操作:
-
字符串1.split(字符串2):将字符串1中所有的字符串2作为切割点对字符串进行切割,返回包含切割后每一小段对应的字符串的列表
-
字符串1.split(字符串2, N):将字符串1中前N个字符串2作为切割点为字符串1进行切割
str1 = 'abcmn123mnkplmn##' result = str1.split('mn') print(result) # ['abc', '123', 'kpl', '##'] str1 = 'mnabcmnmn123mnkplmn##mn' result = str1.split('mn') print(result) # ['', 'abc', '', '123', 'kpl', '##', ''] str1 = 'abcmn123mnkplmn##' result = str1.split('mn', 2) print(result) # ['abc', '123', 'kplmn##']
-
-
replace操作1:字符串1.replace(字符串2,字符串3) 将字符串1中所有的字符串2都替换成字符串3
-
replace操作2:字符串1.replace(字符串2,字符串3,N) 将字符串1中前N个字符串2都替换成字符串3
-
举例:
str1 = "fhumnnbugemn/*&%mn" str2 = str1.replace("mn","WU") str3 = str1.replace("mn","") # 相当于删除了mn str4 = str1.replace("mn","Wu",2) # 只替换了前两个mn str5 = str1.replace("mn","",2) # 相当于删除了前两个mn print(str2) # fhuWUnbugeWU/*&%WU print(str3) # fhunbuge/*&% print(str4) # fhuWunbugeWu/*&%mn print(str5) # fhunbuge/*&%mn
-
strip操作:字符串.strip() ,删除左右两端的空白字符。
-
字符串.rstrip() ,
-
字符串.lstrip() ,
-
字符串.strip(“字符串”),删除左右两端的特定字符。
str1 = " wu " result = str1.strip() print(result) # wu str1 = '//wus' result = str1.strip('/') print(result) # wus
-
-
find,index操作:
-
字符串1.find(字符串2) - 获取字符串1中字符串2第一次出现的位置(以0开始的下标值返回),如果字符串2不存在返回-1
-
字符串1.index(字符串2) - 获取字符串1中字符串2第一次出现的位置(以0开始的下标值返回),如果字符串2不存在报错!
-
字符串1.find(字符串2, 开始下标, 结束下标) - 获取字符串1中指定范围内字符串2第一次出现的位置
-
字符串1.index(字符串2, 开始下标, 结束下标) - 获取字符串1中指定范围内字符串2第一次出现的位置
str1 = 'how are you? I am fine, thank you! and you?' print(str1.find('you')) # 8 print(str1.index('you')) # 8 print(str1.find('abc')) # -1 print(str1.index('abc')) # 报错! print(str1.find('you', 10)) # 30 print(str1.find('you', 10, 26)) # -1
-
rfind、rindex操作:
str1 = 'how are you? I am fine, thank you! and you?' print(str1.rfind('you')) # 39
-
-
其他方法:center,rjust,ljust,zfill,用特定符号填充字符串长度为指定的长度的长度。
-
举例:
print(str1.center(7, '+')) # '++abc++' print(str1.rjust(7, '*')) # '****abc' print(str1.ljust(7, '&')) # 'abc&&&&' print(str1.zfill(7)) # '0000abc'
-
-
字符串.count
str1 = 'mnabcmnmn123mnkplmn##mn' print(str1.count('a')) # 1 print(str1.count('mn')) # 6
-
startswith 和 endswith:
-
字符串1.startswith(字符串2):检查字符串1是否是以字符串2开头
-
字符串1.endswith(字符串2):检查字符串1是否是以字符串2结尾
str1 = 'mnabcmnmn123mnkplmn##mn' print(str1.startswith('ab')) # False print(str1.endswith('#mn')) # True
-
-
isdigit,isalpha,isalnum,islower,isupper
-
字符串1.isdigit():检查字符串是否是以数字构成。
-
字符串1.isalpha():检查字符串是否是以字母构成
-
字符串1.isalnum():检查字符串是否是以数字加上字母构成
-
字符串1.islower():检查字符串是否都是小写构成
-
字符串1.isupper():检查字符串是否都是大写构成
print('23211'.isdigit()) # True print("515hufkf".isalpha()) # False print("45fhgb".isalnum()) # True print('JKSS'.isupper()) # True print('hjas'.islower()) # True
-
-
maketrans,translate
str1 = "15984890834" table = str.maketrans("1234567890","一二三四五六七八九零") # 创建一个映射表 str2 = str1.translate(table) # 根据映射表的对应的关系替换字符串中的相关字符 print(str2)
-
字符串格式化
-
常用的字符串占位符:%s,%d,%f
-
%s:可以给任何类型的数据占位
-
%d:只能给数字数据占位
-
%f:只能给数字数据占位(浮点数占位,默认保留6位小数)
-
%Nf:只能给数字数据占位(保留N位小数)
-
f - string:如果在字符串的最外面加了f,就可以在字符串中通过{}来给字符串提供内容:{表达式}表达式的结果就是对应的字符串内容。
name = "小明" age = 18 money = 1000 print(f"{name}今年{age},身上有{money}元钱") # 小明身上有1000元钱
-
f - string的参数:{提供数据的表达式:参数}
-
控制小数位数:{提供数据的表达式:.Nf}
gmv = 2500 print(f"年销售额:{gmv*120:.2f}") # 年销售额:300000.00
-
大金额逗号分隔:{提供数据的表达式:,}
rmb = 13018208106 print(f"金额:{rmb:,}") # 13,018,208,106
-
既控制小十位数,友使用逗号:{提供数据的表达式:,.Nf}
rmb = 13018208106 print(f"金额:{rmb:,.2f}") #13,018,208,106.00
-
小数显示成百分比:{提供数据的表达式:.N%}
a = 0.84 print(f"及格率:{a:.1%}")
-
控制填充方式:(实现center,rjust,ljuat,zfill的功能)
-
{提供数据的表达式:字符>长度} (填充的放在前面)
-
{提供数据的表达式:字符<长度} (填充的放在后面)
-
{提供数据的表达式:字符^长度} (填充的放在中间)
-
如果没有提供字符,默认填充空格
nums = [9,45,136,1598,57891] b = "py2204" for i in nums: print(f"{b}{i:0>5}") # py220400009 # py220400045 # py220400136 # py220401598 # py220457891
-
-
-
-