- 思维导图
- 前言
- 代码详解
- capitalize
- casefold
- center
- count
- encode
- endswith
- startswith
- expandtabs
- find
- rfind
- format
- format_map
- index
- rindex
- isalnum
- isalpha
- isascii
- isdecimal
- isdigit
- isidentifier
- islower
- isnumeric
- isprintable
- isspace
- istitle
- isupper
- join
- ljust
- rjust
- lower
- upper
- strip
- lstrip
- rstrip
- maketrans
- translate
- partition
- rpartition
- removeprefix
- removesuffix
- replace
- split
- rsplit
- splitlines
- swapcase
- title
- zfill
思维导图
前言
请仔细阅读思维导图中的变量命名格式。有问题可以加V:qing_an_an,最后有习题赠送!
如果看不懂如下例子,那么请移步到学习:
注意代码详解部分出自于源码,这里都只是增加了例子,帮助理解如何运用。
代码详解
capitalize
第一个字母大写其他字符串小写
a = 'qing an'print(a.capitalize())# Qing an
casefold
返回无大小写字符串
b = 'Qing An'print(b.casefold())# qing an
center
此方法补全参数中的个数,例如下述例子,center(10,”-“),如果c中字符串不足10个,则用-不全
c = "QingAn"print(c.center(10,'-'))# --QingAn--
count
计数,可指定字符串在某字符串上出现的次数
d = "QingAn An An"print(d.count('An'))# 3
encode
对字符串进行编码,同时也有对应的解码。编码不只一下两种!
e = "我是清安"print(e.encode(encoding='utf8',errors='strict'))print(e.encode(encoding='gbk',errors='strict'))e1 = e.encode('utf8')print(e1.decode('utf8'))# b'\xe6\x88\x91\xe6\x98\xaf\xe6\xb8\x85\xe5\xae\x89'# b'\xce\xd2\xca\xc7\xc7\xe5\xb0\xb2'# 我是清安
endswith
作用巨大。判断以什么为结尾
S.endswith(suffix[, start[, end]]) -> bool
如果S以指定后缀结尾,则返回True,否则返回False。
可以选择起始以及结束的位置。
条件也可以是字符串的元组。
f = "我是Qingan"# 检索是否以an字符串结尾print(f.endswith('an'))# 检索元组元素,存在f的字符串中返回Trueprint(f.endswith(('我','n')))# 检索从下标0开始6结束的位置,是否以'是'结尾print(f.endswith('是',0,6))# 检索从下标0开始6结束的位置,是否以'g'结尾print(f[0:6].endswith('g'))# True# True# False# True
startswith
如果S以指定前缀开头,则返回True,否则返回False。可选定开始位置,结束位置,以及前缀为字符串的元组
注意startswith跟endsswith可以互相借鉴用法
y = "你好,QINGAN "print(y.startswith('你'))print(y.startswith('好',1,8))print(y.startswith(',',1))print(y.startswith(('你','好'),0,9))# True# True# False# True
expandtabs
制表符都使用空格展开。如果未给出tabsize,默认tab大小为8个字符
g = "我是Qing\tan"print(g.expandtabs())print(g.expandtabs(16))# 我是Qing an# 我是Qing an
find
如果包含子字符串返回开始的索引值,否则返回-1。
h = "我是Qingan"h1 = "an"# 查找a元素print(h.find('a'))# 查找'我'元素,从下标1开始,7结束print(h.find('我',1,7))# 在h中查找h1中的元素print(h.find(h1))# 6 -1 6
rfind
跟上述的find类似
e = "你好,清安"print(e.rfind("你",0,10))print(e.rfind("清"))
format
格式化输出,写法与print(f”{}”)无异
i = "我是Qingan"i1 = 3.1415926print(f"{i}")print("{}".format(i))# 顺序位置,可以理解为按照命名空间来,先写的i,后写的i1print("{0}{1}".format(i,i1))print("{1}{0}".format(i,i1))# 保留小数print("{:.1f}".format(i1))print("{:.2f}".format(i1))
format_map
使用映射中的替换返回j的格式化版本。
j = "我是{name},考试考了{number}"j1 = {'name':'qingan','number':100}print(j.format_map(j1))# 我是qingan,考试考了100
index
索引,查找 出某个值第一个匹配项的索引位置。 如果没有则会抛出异常
j = "我是Qingan,欢迎一起学习"# 查找欢迎在某一位置print(j.index('欢迎')) # 9# 在下标0,20中查找Qinganprint(j.index('Qingan',0,20)) # 2print(f.index(","))# ValueError: substring not found
rindex
跟上述index类似
f = "你好,清安"print(f.rindex(","))print(f.rindex("好",0,9))# 2# 1
isalnum
str中至少有一个字符且所有字符都是字母或数字则返回 True,否则返回 False
k = "我是Qingan,欢迎一起学习"k1 = "Qingan123"k2 = "Qingan"k3 = "123456"print(k.isalnum())print(k1.isalnum())print(k2.isalnum())print(k3.isalnum())# False True True True
isalpha
只能检测英文,其余都是false
l = "我是Qingan,欢迎一起学习"l1= "12"l2 = "HELLOQingan"l3 = "Qingan12"print(l.isalpha())print(l1.isalpha())print(l2.isalpha())print(l3.isalpha())#False False True False
isascii
判断字符串中的所有字符都是ASCII,则返回True,否则返回False。
l = "我是Qingan,欢迎一起学习"l1 = "1234"l2 = "Qingan"print(l.isascii())print(l1.isascii())print(l2.isascii())# False True True
isdecimal
判断所有字符串中是否为十进制
m = "我是Qingan,欢迎一起学习"m1 = "1234"m2 = "Qingan"print(m.isdecimal())print(m1.isdecimal())print(m2.isdecimal())#False True False
isdigit
判断字符串是否为都为数字
n = "我是Qingan,欢迎一起学习"n1 = "1234"n2 = "Qingan1"print(n.isdigit())print(n1.isdigit())print(n2.isdigit())# False True False
isidentifier
判断合法标识符
o = "_Qingan"o1 = "1234"o2 = "Qingan1"print(o.isidentifier())print(o1.isidentifier())print(o2.isidentifier())# True False True
islower
判断字符串都是小写字符串
p = "Qingan"p1 = "1234"p2 = "QINGAN"p3 = "qingan"print(p.islower())print(p1.islower())print(p2.islower())print(p3.islower())# False False False True
isnumeric
判断字符串是否都为数字
q = "Qingan"q1 = "1234"q2 = "QINGAN"q3 = "qingan"print(q.isnumeric())print(q1.isnumeric())print(q2.isnumeric())print(q3.isnumeric())# False True False False
isprintable
判断字符串可打印或为空,确切的说判断字符串是否符合规范的字符串或为空则返回True
r = "Qing\ran"r1 = "12\n34"r2 = "QING AN"r3 = "qin\tgan"r4 =" "print(r.isprintable())print(r1.isprintable())print(r2.isprintable())print(r3.isprintable())print(r4.isprintable())# False False True False True
isspace
判断字符串是都为”空白字符串”
s = "Qingan"s1 = "1234"s2 = "QING AN"s3 = ""s4 = " "print(s.isspace())print(s1.isspace())print(s2.isspace())print(s3.isspace())print(s4.isspace())# False False False False True
istitle
字符串是以标题格式开头的字符串,并且至少有一个字符大写。 大写字符只能跟在无大小写字符后面,而小写字符只能跟在大小写字符后面。
t = "Qing An"t1 = "Q1234"t2 = "QING AN"t3 = "Qingan"print(t.istitle())print(t1.istitle())print(t2.istitle())print(t3.istitle())# True True False True
isupper
判断字符串中是否都是大写,如果不是则判断是否有一个是大写(纯英文除外,可以是数字)
u = "Qing An"u1 = "Q1234"u2 = "QING AN"u3 = "Qingan"u4 = "1234Q"print(u.isupper())print(u1.isupper())print(u2.isupper())print(u3.isupper())print(u4.isupper())# False True True False True
join
连接任意数量的字符串。调用其方法的字符串插入到每个给定字符串之间。结果将作为新字符串返回。
v = " "v1 = "-"v2 = "*"v3 = "~"print(v.join('你好,QingAn'))print(v1.join(['你','好']))print(v2.join(("清","安")))print(v3.join({"name":"清安","age":"5"}))# 你 好 , Q i n g A n# 你-好# 清*安# name~age
ljust
类似于填充的作用,但是以左对齐。如果填充长度小于字符串长度,则保持原字符串
w = "清安"w1 = "学习使我快乐"w2 = "学习使我快乐"print(w.ljust(10,'*'))print(w1.ljust(10,'~'))print(w2.ljust(4,"*"))# 清安********# 学习使我快乐~~~~# 学习使我快乐
rjust
与ljust相反,用法类似
w = "清安"w1 = "学习使我快乐"w2 = "学习使我快乐"print(w.rjust(4,"*"))print(w1.rjust(10,"~"))print(w2.rjust(4,"*"))# **清安# ~~~~学习使我快乐# 学习使我快乐
lower
返回转换为小写的字符串,注意:两个字符串不是同一个字符串了
x = "你好QINGAN"print(x.lower())# 你好qingan
upper
返回转换为大写的字符串的副本
test = "my home 清安.com"print(test.upper())# MY HOME 清安.COM
strip
返回删除前导和尾随空格的字符串副本。注意:两个字符串不是同一个字符串了
y = " 你好,QINGAN "y1 = "清安 你好"print(y.strip())print(y1.strip())# 你好,QINGAN# 清安 你好
lstrip
返回删除字符串前面的空格的字符串副本。注意:两个字符串不是同一个字符串了
y = " 你好QINGAN"y1 = "Qing an"y2 = " "print(y.lstrip())print(y1.lstrip())print(y2.lstrip())# 你好QINGAN# Qing an#
rstrip
返回删除尾随空格的字符串副本。注意:两个字符串不是同一个字符串了
y = " 你好QINGAN "y1 = "Qing an "y2 = " "print(y.rstrip())print(y1.rstrip())print(y2.rstrip())
maketrans
如果只有一个参数,则它必须是映射Unicode的字典,序号(整数)或字符到Unicode序号、字符串或None。然后,字符键将转换为序数。
如果有两个参数,则它们必须是长度相等的字符串,并且在生成的字典中,x中的每个字符都将映射到字符在y中的相同位置。
如果有第三个参数,则必须是字符串,其字符将在结果中映射为“None”。
z = {"a":1,"b":2,"c":3}z1 = "QingAn"z2 = "AnQing"z3 = "H"print(str.maketrans({"a":"清","b":"安","c":"安"}))print(str.maketrans(z1,z2))print(str.maketrans(z1,z2,z3))# {97: '清', 98: '安', 99: '安'}# {81: 65, 105: 110, 110: 103, 103: 105, 65: 110}# {81: 65, 105: 110, 110: 103, 103: 105, 65: 110, 72: None}
translate
可配合maketrans使用。根据字符映射表对字符串进行删除和替换操作 。下述例子“将字母m转换为清,将字母y转换为安”
y = "my"y1 = "清安"y2 = '.com'test = "my home 清安.com"t = str.maketrans(y,y1) # 创建字符映射转换表t1 = str.maketrans(y,y1,y2) # 创建字符映射转换表,并删除指定字符print(test.translate(t))print(test.translate(t1))# 清安 ho清e 清安.co清# 安 he 清安
上述看的模糊可以看如下:
test = "my home 清安.com"t1 = str.maketrans("my",'清安')print(test.translate(t1))# 清安 ho清e 清安.co清
partition
使用给定的分隔符将字符串分成三部分。
如果找到分离器,返回一个3元组,其中包含分隔符之前的部分,即分隔符它本身和它后面的部分。
如果未找到分隔符,则返回包含原始字符串的3元组和两个空字符串。
a = "清安,你好"b = "学习IT,你可以吗"print(str.partition(a,","))print(str.partition(b,"IT"))print(str.partition(b,"?"))# ('清安', ',', '你好')# ('学习', 'IT', ',你可以吗')# ('学习IT,你可以吗', '', '')
rpartition
与partition类似
a = "清安,你好"b = "学习IT,你可以吗"print(str.rpartition(a,","))print(str.rpartition(b,"IT"))print(str.rpartition(b,"?"))# ('清安', ',', '你好')# ('学习', 'IT', ',你可以吗')# ('', '', '学习IT,你可以吗')
removeprefix
去除指定字符串前缀。此方法需要手敲
否则,返回原始字符串的副本。
c = "QING"c1 = "清安"print(c.removeprefix('Q'))print(c.removeprefix('A'))print(c1.removeprefix('清'))# ING# QING# 安
removesuffix
去除指定字符串后缀。此方法需要手敲
否则,返回原始字符串的副本。
c = "QING"c1 = "清安 "print(c.removesuffix('G'))print(c.removesuffix('A'))print(c1.removesuffix('清'))# QIN# QING# 安
replace
替换字符串中的某个值,如果没有,则返回原字符串的副本。
d = "你好,清安"print(d.replace("你好","HELLO"))print(d.replace("好你","HELLO"))# HELLO,清安# 你好,清安
split
默认以空格作为分隔符,可以指定分隔次数,分隔的符号。且最后返回列表
y = " 你好,QING,AN "y1 = "Qing an "# 以,分隔符print(y.split(","))# 以,分隔符,分隔一次print(y.split(',',1))print(y1.split())# [' 你好', 'QING', 'AN ']# [' 你好', 'QING,AN ']# ['Qing', 'an']
rsplit
默认以空格作为分隔符,可以指定分隔次数,分隔的符号。且最后返回列表。从右边开始
也可以用于去除两端空格
y = " 你好,QING,AN "y1 = "Qing an "print(y.rsplit(","))print(y.rsplit(',',1))print(y1.rsplit())# [' 你好', 'QING', 'AN ']# [' 你好,QING', 'AN ']# ['Qing', 'an']
splitlines
可去除换行符,并返回一个列表
y = "你\r好\n,QING\tAN "# str.splitlines(y) 跟 y.splitlines()一致print(str.splitlines(y))print(y.splitlines(keepends=True))# ['你', '好', ',QING\tAN ']# ['你\r', '好\n', ',QING\tAN ']
swapcase
大小写互转
y = " Hellp,QINGan "print(y.swapcase())# hELLP,qingAN
title
将字符串首字母都大写
y = " hello,Qing An "y1 = "wo shi qing an"print(y.title())print(y1.title())# Hello,Qing An# Wo Shi Qing An
zfill
左边用零填充数字字符串,以填充给定宽度的字段。
y = "清安"print(y.zfill(8))# 000000清安
