上接"python3基础01数值和字符串(一)";
本篇详细梳理字符串方法,字符串格式化输出。
更好阅读体验请戳:
目录
- 字符串处理方法
find方法
join方法
split方法
lower方法
upper方法
replace方法
strip,lstrip和rstrip方法
translate方法
startswith方法
endswith方法
is开头的诸多方法
- 字符串格式化输出:format方法
调用参数
参数格式转换
python指定字符宽度,精度
指定字符千分位分隔符
对齐
指定填充字符
等号(=),指定将填充字符放在符号和数字之间
正文开始啦~~~~~~~~~~~~
字符串处理方法
字符串处理方法很多(如下),本文介绍常用的几种方法,详细可见链接:https://docs.python.org/zh-cn/3.7/library/stdtypes.html 。
In [23]: print(dir(str))#dir列出字符串所用方法
'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'
find方法
语法,str.find(sub_str,a,b)
字符串str中查找子字符串sub_str所在位置时使用,a,b分别制定从str中开始搜索的位置,默认从第一个字符开始,a,b均可忽略;如果找到sub_str,就返回sub_str的第一个字符的索引,没找到返回-1。可用来判断str中是否包sub_str以及位置。
In [32]: print("xiyangyang lanyangyang".find("huitanglang"))
-1
In [33]: print("xiyangyang lanyangyang".find("yang"))
2
join方法
语法:sep.join(str),以sep为分隔符拼接字符串str。
In [36]: print("+".join("xiyangyang"))
x+i+y+a+n+g+y+a+n+g
split方法
语法:str.split(sep),以sep为分隔符,拆分字符串str为一个list。
In [37]: print("x+i+y+a+n+g+y+a+n+g".split("+"))
['x', 'i', 'y', 'a', 'n', 'g', 'y', 'a', 'n', 'g']
lower方法
语法:str.lower(),将字符串str转化为小写版本。
In [39]: print("Hello! Hi!".lower())
hello! hi!
upper方法
语法:str.upper(),将字符串str转化为大写版本。
In [41]: print("Hello! Hi!".upper())
HELLO! HI!
replace方法
语法:str.replace("sub_str1", "sub_str2", max)。将字符串str中的子字符串sub_str1替换为sub_str2,max为允许替换的最大次数,可忽略,默认替换所有。
In [48]: print("xiyangyang lanyangyang".replace("an","XX",2))
xiyXXgyXXg lanyangyang
strip,lstrip和rstrip方法
语法:三个方法类似,str.strip(sub_str)。strip方法去掉str开头和结尾的子字符串sub_str,sub_str可忽略,默认为空格。
In [49]: print(" Hello ".strip())
Hello
In [50]: print(" Hello ".lstrip())
Hello
In [51]: print(" Hello ".rstrip())
Hello
In [52: print(" Hello ".rstrip("o "))
Hell
translate方法
语法:str.translate(table),该方法同时替换str中多个字符,replace一次只能替换一个。
In [56]: old = "axy"
...: new = "123"
...: #调用字符串str的maketrans方法制作转换表
...: table = str.maketrans(old, new)
...:
...: str1 = "xiyangyang lanyangyang"
...: print (str1.translate(table))
2i31ng31ng l1n31ng31ng
startswith方法
语法:str.startswith(sub_str, a, b)。判断str是否以sub_str开头,是则返回True,否则返回False,a,b指定检索开始和结束( 默认是字符串的长度,表示结束搜索的位置)为止,默认从第一个字符开始。
In [64]: print("Hello".startswith("H"))
True
endswith方法
使用类似startswith,判断str是否以sub_str结尾。
is开头的诸多方法
'isalnum', 'isalpha', 'isascii', 'isdecimal',
'isdigit', 'isidentifier', 'islower', 'isnumeric',
'isprintable', 'isspace', 'istitle', 'isupper'
分别为判断字符时否是字母或数字、字母、ASCII等,详细参考https://docs.python.org/zh-cn/3.7/library/stdtypes.html,结果返回True或者False。
- 字符串格式化输出:format方法
调用参数
按顺序将字段和参数配对输出
#按顺序将字段和参数配对输出
In [79]: "{} {} {} {}".format(1, 2, 4, 3)
Out[79]: '1 2 4 3'
#给参数指定名称,通过参数名称调用输出
In [80]: "{a} {a} {b} {b}".format(a=1, b=2)
Out[80]: '1 1 2 2'
#以上两种方法混用
In [81]: "{} {a} {} {b}".format(0, 3, a=1, b=2)
Out[81]: '0 1 3 2'
#未命名参数通过索引调用输出
In [82]: "{1} {a} {0} {b}".format(0, 3, a=1, b=2)
Out[82]: '3 1 0 2'
参数格式转换
指定要转换的值是哪种类型,如下例中的f b。
In [85]: "The number is {:f}".format(42)#f将小数表示为定点数
Out[85]: 'The number is 42.000000'
In [86]: "The number is {:b}".format(42)#b将整数表示为二进制数
Out[86]: 'The number is 101010'
常用转化类型
b 将整数表示为二进制数
c 将整数解读为Unicode码点
d 将整数视为十进制数进行处理,这是整数默认使用的说明符
e 使用科学表示法来表示小数(用e来表示指数)
E 与e相同,但使用E来表示指数
f 将小数表示为定点数
F 与f相同,但对于特殊值(nan和inf),使用大写表示
g 自动在定点表示法和科学表示法之间做出选择。这是默认用于小数的说明符,但在默认情况下至少有1位小数
G 与g相同,但使用大写来表示指数和特殊值
n 与g相同,但插入随区域而异的数字分隔符
o 将整数表示为八进制数
s 保持字符串的格式不变,这是默认用于字符串的说明符
x 将整数表示为十六进制数并使用小写字母
X 与x相同,但使用大写字母
% 将数表示为百分比值(乘以100,按说明符f设置格式,再在后面加上%)
python指定字符宽度,精度
In [96]: "Pi is {pi:10.2f}".format(pi=math.pi)#指定字符快读为10,精度为2个小数位
Out[96]: 'Pi is 3.14'
指定字符千分位分隔符
In [101]: 'Oh gold banknote is {:,} yuan'.format(100000000000)
Out[101]: 'Oh gold banknote is 100,000,000,000 yuan'
对齐
分别使用<、>和^指定左对齐,右对齐和居中。
In [107]: print('{0:<10.2f}n{0:^10.2f}n{0:>10.2f}'.format(math.pi))
指定填充字符
默认为空格
In [113]: print('{0:$<10.2f}n{0:@^10.2f}n{0:&>10.2f}'.format(math.pi))
3.14$$$$$$
@@@3.14@@@
&&&&&&3.14
等号(=),指定将填充字符放在符号和数字之间
此处=类似于<、>和^
In [127]: print('{0:$>10.2f}n{1:$=10.2f}'.format(math.pi, -math.pi))
$$$$$$3.14
-$$$$$3.14
3、参考资料
[https://www.cnblogs.com/f-ck-need-u/p/9127699.html#21-isalphaisdecimalisdigitisnumericisalnum][6]
[https://docs.python.org/zh-cn/3.7/library/stdtypes.html#str.join][7]

网友评论