1. 字符串了解
字符串最大用途是 设置其他值的格式,来完成拆分,合并,和查找等功能
1.1 字符串的基本操作
相对列表和元组而言,切片/索引/乘法/成员资格.长度.最小值.最大值均可用于字符串.
str1 = "你好,2018年,ai 中国"str2 = max(str1) # 最大字符print(str2)print(type(str2))print("*****完美分割线1******\n")str2 = min(str1) # 最小字符,此次最小为空格符号print(str2)print(type(str2))print("*****完美分割线2******\n")str2 = len(str1) # 长度计算:计算结果为整数print(str2)print(type(str2))print("*****完美分割线3******\n")str2 = str1 * 2 # 字符串 乘法:乘法结果并无空格print(str2)print(type(str2))print("*****完美分割线4******\n")str2 = str1 + str1 # 字符串 相加: 相加结果中并无空格print(str2)print(type(str2))print("*****完美分割线5******\n")str2 = str1[0] # 索引动作:单个子元素位置索引print(str2)print(type(str2))print("*****完美分割线6******\n")str2 = str1[2:4] # 索引动作:子元素位置自2开始,至3结束print(str2)print(type(str2))print("*****完美分割线7******\n")str2 = str1[::2] # 索引动作:子元素位置自2开始,至3结束print(str2)print(type(str2))print("*****完美分割线8******\n")str2 = "你好" # 成员资格 in : 返回True 或者Flaseprint(str2 in str1)print(type(str2 in str1))print("*****完美分割线9******\n")str2 = "你好,2018年,ai 中国"print(str2 == str1) # 比较运算符 字符串支持print(type(str2 in str1))print("*****完美分割线10******\n")lst1 = ["你好","2018年","ai","中国"]lst2 = ["你好","2018年","ai","中国"]print(lst2 == lst1) # 比较运算符 字符串支持print(type(lst2 in lst1))lst3 = lst1[0] # 索引返回的是 ,与当前子元素的格式一样print(lst3)print(type(lst3))print("*****完美分割线11******\n")str1 = "你好","2018年","ai","中国" # 此为元组print(str1)print(type(str1))
年*****完美分割线1****** *****完美分割线2******14 *****完美分割线3******你好,2018年,ai 中国你好,2018年,ai 中国 *****完美分割线4******你好,2018年,ai 中国你好,2018年,ai 中国 *****完美分割线5******你 *****完美分割线6******,2 *****完美分割线7******你,08,i中 *****完美分割线8******True *****完美分割线9******True *****完美分割线10******True 你好 *****完美分割线11******('你好', '2018年', 'ai', '中国')
2.字符串的格式
字符串的格式,是调用字符串方法 format 实现字符串指定位置的赋值,
字符串 str = " ", 而格式字符串为 str = " { }". format() 或者 " { } { } { } " . format()
或 str = " {
{ }}" . format ( ).这取决于你希望结果中是否包含{},但{} 内 不可以有空格区分 赋值替换的位置 赋的值
替换字段包含以下信息
字段名 : 索引 或标识符 ,指出设置哪个值的格式,并使用结果 来替换字段,也可以指定特定值的特定部分,如列表元素
str1 = "{a} {b} {c} {d}"print(str1.format(a=1, b=2, c=3, d=4)) #最简单情况下,只需向format()函数提供要设置其格式的未命名参数,并在格式字符串中,使用未命名字段.此时将按顺序将字段和参数配对.print("*****完美分割线1******\n")str2 = "{a}{}".format(2,a = 1) #使用未命名字段.此时将按顺序将字段和参数配对,你也可以给参数指定名称,这种参数将用于对于的替换字段中,也可以混合使用.print(str2)print(type(str2))print(str2[1])print(type(str2[1])) #格式为字符串.print("*****完美分割线2******\n")str3 = "{0}{a}".format(2,a = 1) #格式为字符串.print(str3)print(type(str3))print(type(str3[0])) #格式为字符串.
1 2 3 4*****完美分割线1******122 *****完美分割线2******21
转换标志 : 跟在! 感叹号后面的部分.当前支持的字符包含 r (repr) s (str) a(ascii) ,如果你指定了转换标志,将不适用对象的本身的格式设置机制,而是使用指定函数的将 对象转换为字符串,再做进一步设置.
print("*****完美分割线3******\n")lst1 = ["China", "American", "Russia", "European Union"]str4 = "{}{}{}"str5 = "{}{}{}".format(lst1,lst1,lst1) # 参数可为字符串或列表print(lst1)print(str4)print(str5)print(type(str5))print("*****完美分割线4******\n")lst2 = ["China", "American", "Russia", "European Union"]str6 = "I LOVE {}".format(lst2[0])str7 = "they {country}".format(country = lst2)str7 = "I Regret {country[1]}".format(country = lst2)# 参数可为列表具体的元素print(lst2)print(str6)print(type(str6))print(str7)print(type(str7))print(len(str7))
*****完美分割线3******['China', 'American', 'Russia', 'European Union']{}{}{}['China', 'American', 'Russia', 'European Union']['China', 'American', 'Russia', 'European Union']['China', 'American', 'Russia', 'European Union']*****完美分割线4******['China', 'American', 'Russia', 'European Union']I LOVE China I Regret American 17
格式说明符 :跟在冒号后面的表达式,格式说明符 让我们能够详细的指定最终的格式,包含 格式类型(如 字符串 浮点数 或者十六进制),字段宽度和数的精度. 以及各种对齐方式 填充方式 或者如何显示百分位和千分位。
完成替换字段名后,可以设置参数的格式,首先我们尝试使用一个转换标志! 感叹号和r s a的使用,看下效果
str8 = "{i!r} , {i!s} , {i!a}".format(i = "π")# 转换标志 ! 感叹号print(str8)str9 = "{0} , {0} , {0}".format( "π") # 无转换标志符print(str9)str9 = "{0} , {0} , {0}".format( "π") # 无转换标志符print(str9)str10 = "this number is {pi:f}".format(pi = 3.14) # 无转换标志符,f默认6位小数print(str10)
效果如下:
'π' , π , '\u03c0'π , π , ππ , π , πthis number is 3.140000
宽度/精度/千位分隔符
# 符号对齐 与用字符填充 #通常为了打印整齐的表格,对于负数符号,需要采用对齐,此处包含以下方式 #在指定的宽度/精度前面加上一个标志 0(填充0),加好+ (填充加好) 减号(填充-) 或者空格( ).
str18 = "{:010.2f}".format(3.1415926) # 冒号后第一位0,表示填充0print(str18)str18 = "{:+10.2f}".format(3.1415926) # 冒号后第一位+,表示填充1个加print(str18)str18 = "{:-10.2f}".format(3.1415926) # 冒号后第一位-,未填充上print(str18)print("*****完美分割线12******\n")str18 = "{:<010.2f}".format(3.1415926) # 冒号后第一位<,表示左对齐print(str18)str18 = "{:>+10.2f}".format(3.1415926) # 冒号后第一位<,表示右对齐print(str18)str18 = "{:^-10.2f}".format(3.1415926) # 冒号后第一位^,表示居中print(str18)print("*****完美分割线13******\n")str18 = "{:#<010.2f}".format(3.1415926) # 冒号后第一位#,表示左对齐,其他补充#print(str18)str18 = "{:#>+10.2f}".format(3.1415926) # 冒号后第一位#,表示右对齐,其他补充#print(str18)str18 = "{:#^-10.2f}".format(3.1415926) # 冒号后第一位#,表示居中,其他补充#print(str18)str18 = "{:=10.2f}".format(-3.1415926) # 冒号后第一位=,符号位与参数之间 填充 空格print(str18)str18 = "{:#=10.2f}".format(-3.1415926) # 冒号后第一位#=,符号位与参数之间 填充 #print(str18)str18 = "{:$=10.2f}".format(-3.1415926) # 冒号后第一位$=,符号位与参数之间 填充 $print(str18)print("*****完美分割线14******\n")str18 = "{:-.2}".format(3.1415926) # 冒号后第一位 无,显示2位,对齐print(str18)print(len(str18))str18 = "{:.2}".format(3.1415926) # 冒号后第一位 无print(str18)print(len(str18))str18 = "{: .2}".format(3.1415926) # 冒号后第一位 空格,以便与下面对齐print(str18)print(len(str18))str18 = "{:+.2}".format(3.1415926) # 冒号后第一位 加号 ,以便与下面对齐print(str18)print(len(str18))str18 = "{:.2}".format(-3.1415926) # 冒号后第一位无,参数有负值,方便与上文对齐print(str18)print(len(str18))
0000003.14 +3.14 3.14*****完美分割线12******3.14000000 +3.14 3.14 *****完美分割线13******3.14###########+3.14###3.14###- 3.14-#####3.14-$$$$$3.14*****完美分割线14******3.133.13 3.14+3.14-3.14
3.字符串的方法
常见的string 模块中的常量方法
import stringprint(string.digits) # 打印 0-9 字符串print(string.ascii_letters) # 打印 所有大小写字母print(string.ascii_lowercase) # 打印 小学字母print(string.printable) # 打印 所有可打印的 ascii字符print(string.punctuation) # 打印 所有可打印的 ascii标点字符print(string.ascii_uppercase) #打印所有 大写字母
center
find
join
lower
replace
split
strip
translate
print("*****完美分割线21******\n")tuple1 = str.maketrans("cs", "kz") # translare 方法启用前,需要创建一个对换表,类似于获取 unicode码print(tuple1)str29 = "this is an incredible test"print(str29.translate(tuple1))tuple1 = str.maketrans("cs", "kz", " ") # translare 方法 可在后方添加替换其他字符,比如空格str29 = "this is an incredible test"print(str29.translate(tuple1))print("*****完美分割线21******\n")import stringstr30 = "this is an incredible test"str31 = str30.isalnum() # Python isalnum() 方法检测字符串是否由字母和数字组成print(str31)str31 = str30.isalpha() # Python isalpha() 方法检测字符串是否只由字母组成print(str31)str31 = str30.isdecimal() # Python isdecimal() 方法检查字符串是否只包含十进制字符print(str31)str31 = str30.isdigit() # Python isdigit() 方法检测字符串是否只由数字组成print(str31)str31 = str30.isidentifier() #isidentifier 是否满足标识符定义规则 标识符定义规则为:只能是字母或下划线开头、不能包含除数字、字母和下划线以外的任意字符。print(str31)str31 = str30.islower() #islower) 方法检测字符串中所有的字母是否都为小写print(str31)str31 = str30.isnumeric() #isnumeric() 方法检测字符串是否只由数字组成print(str31)str31 = str30.isprintable() # isprintable() 判断是否为可打印字符串,例如制表符、换行符就不是可打印字符,但空格是print(str31)str31 = str30.isspace() # isspace() 方法检测字符串是否只由空白字符组成print(str31)str31 = str30.isupper() # isupper() 方法检测字符串中所有的字母是否都为大写print(str31)str31 = str30.istitle() # istitle() 检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写print(str31)
China, Spain to enhance partnership,Spain ****China, Spain to enhance partnership,Spain**********完美分割线15******773636*****完美分割线16******1+2+3+4+512345*****完美分割线17******china, spain to enhance partnership,spainChina, Spain To Enhance Partnership,SpainChina, Spain To Enhance Partnership,spain*****完美分割线18******China, Spain both enhance to partnership,Spain*****完美分割线19******['China, Spain to enhance partnership,Spain']['1', '2', '3', '4', '5']*****完美分割线20*********China, Spain to *** enhance partnership,Spain!!!! ***China, Spain to *** enhance partnership,Spain!!!! China, Spain to *** enhance partnership,Spain*****完美分割线21******{ 115: 122, 99: 107}thiz iz an inkredible teztthizizaninkredibletezt*****完美分割线21******FalseFalseFalseFalseFalseTrueFalseTrueFalseFalseFalse