字符串的处理方法

1.eval(str)
功能:将字符串str当成有效的表达式来求值并返回计算结果。

num1 = eval("123.1") print(num1) #(输出)123.1 print(type(num1)) #(输出)<class 'float'> #type 看数值类型 float为 浮点数 #即eval和float一样能转为小数; 还有其他的功能不局限 print(eval("+123")) #(输出)123 print(eval("-123")) #(输出)-123 print(eval("12+3")) #(输出)15 # 下面这两种 但用int 就会报错 print(eval("12-3")) #(输出)9 print(int("12+3")) print(int("12-3")) #(输出)ValueError: invalid literal for int() with base 10: '12+3' #(输出)ValueError:无效的字面意思为int()和基数10:12+3'

2.len(str)
返回字符串的长度(字符的个数)

print(len("wahat are you doing now")) #(输出)23

3.(str).lower()
转化字符串的大学字母为小写字母

str1 = "Success can attract friends, frustration can be tested." print(str1.lower()) #(输出)success can attract friends, frustration can be tested. print("str1 = %s"%(str1)) #(输出)str1 = Success can attract friends, frustration can be tested.

4.upper()
转换字符串中小写字母为大写字母

str1 = "Success CAN attract friends, frustration can be tested." print(str1.upper()) #(输出)SUCCESS CAN ATTRACT FRIENDS, FRUSTRATION CAN BE TESTED.

5.swapcase()
转换字符串中大小写字母为小大写字母

str2 = " AAAbbb" print(str2.swapcase()) #(输出) aaaBBB

6.(str).capitalize()
首字母大写,其他字母小写

str2 = "AAAbbb" print(str2.capitalize()) #(输出) Aaabbb

7.(str).title()
每个单词的首字母大写 其他小写

str2 = "Success can attract friends, frustration can be tested." print(str2.title()) #(输出) Success Can Attract Friends, Frustration Can Be Tested.

8.(str).center()
center(width.fillchar)
#width 宽度 fillchar 为填充的字符串(不写则默认空格填充)
#char (character 缩写) 单词意思字符
#center字符居中 两边有自动填充字符

str2 = "Good job" print(str2.center(40,"*")) #字符有40个,不够的自动填充字符*,其实下标还是只有39(0-39) print(str2.center(40)) #(输出) ****************Good job**************** Good job

9.(str).ljust()
ljust(width.fillchar)
left缩写成ljust的l
返回一个指定宽度的左对齐字符串,fillchar为填充字符
不写fillchar 则默认空格
ljust() L 的小写

str2 = "Good job" print(str2.ljust(40) ) #(输出)Good job print(str2.ljust(40,"*") ) #(输出)Good job******************************** #从字符后面移植填充到指宽度 print(str2.ljust(40),"*" ) #(输出)Good job * #在宽度的最后填充一个字符结尾

10.(str).rjust()
rjust(width.fillchar)
right缩写成rjust的r
返回一个指定的宽度的的右对齐字符串
不写fillchar 则默认空格

str2 = "Good job" print(str2.rjust(40) ) #(输出) Good job print(str2.rjust(40,"&") ) #(输出)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Good job print(str2.ljust(40),"&") #(输出)Good job &

11.(str).zfill()
zfill(width)
返回一个长度为width的字符串,右对齐 前面补0

str2 = "Good job" print(str2.zfill(40) ) #(输出) 00000000000000000000000000000000Good job

12.(str).count()
count(str[,start][,end])
判断字符串中,从start开始的下标到字符串的结尾end中出现了多少个str (给定字符)
如果 start到end 没写 默认 从头到尾字符串中出现str出现的次数

str3 = "ABCD abc is is is end" print(str3.count("is",9,len(str3))) #就是从下标8以后开始 #(输出) 3 print(str3.count("is",10,len(str3))) #就是从下标9以后开始 #(输出) 2

13.(str).find()
find(str[,start][,end])
start开始查找的位置,默认为 0
检测str字符串是否包含在字符串中,可以指定范围,默认从头到尾第一次出现的开始下标

str3 = "ABCD abc is is is end" print(str3.find("sda")) #(输出)-1 #如字符串中没有给定字符 则返回-1 print(str3.find("abc")) #(输出)5 print(str3.find("abc",5,len(str3))) #(输出)5

14.(str).rfind()
rfind(str[,start][,end])
start开始查找的位置,默认为 0
检测str字符串是否包含在字符串中,可以指定范围,默认从右往左检测

str3 = "ABCD abc is is is end" print(str3.rfind("sda")) #(输出)-1 #如字符串中没有给定字符 则返回-1 print(str3.rfind("abc")) #(输出)5 print(str3.rfind("abc",13,len(str3))) #(输出)-1

15.(str).index()
和find()一样,只不过如果str不存在会报错
一样的有 rindex 从右往左

str4 = "zxcvb is is a goa goaSSsdAod asd" print(str4.index("goa")) #(输出)14 print(str4.rindex("goa")) #(输出)18 str3 = "ABCD abc is is is end" print(str4.index("abc")) #(输出)5 print(str4.rindex("abc")) #(输出)5 #这里就可以看出,如果字符串中有两个对应值,左右查找结果是不一样的, 如果只有一个值,查找的结果是一样的,默认为从左到右的开始下标。

16.(str).lstrip()
截掉(删掉)左侧指定的字符,默认状态下为空格

str5 = " AAAAAAA" str6 = "*****AAAAAAAA" print(str5.lstrip()) #(输出)AAAAAAA print(str6.lstrip("*")) #(输出)AAAAAAAA

17.(str).rstrip()
截掉(删掉)截掉右侧指定的字符,默认状态下为空格

str7 = "*****A AA AAA " str8 = "*****A AA AAA***" print(str7.rstrip()) #(输出)*****A AA AAA print(str7.rstrip("*")) #(输出)*****A AA AAA

18.(str).strip()
截掉(删掉)截掉字符传中左右两端的指定字符,默认状态下为空格

str9 = "*****AAAAAAAA ****" print(str9.strip("*")) #(输出)AAAAAAAA

19.ASCII表
字符的存储是以ASCII进行转化 即一个参照表
a-先变成数字-转化为二进制
ord.(str)将字符转化为数字
chr.(int)将数字转换为字符

str112 = "a" #将字符转化为数字 print(ord(str112)) #(输出)97 str113=chr(45) #将数字转换为字符 print(str113) #(输出)-

20.字符串的比较
从第一个字符开始比较谁的ASCII值谁就大
如果前面相同 则比较后一位直到比较出谁大
如果都相同 则相等

print("acc"<"b") #(输出)True print("sunck"=="sunck") #(输出)True print("acc"<"bcc") #(输出)True print("zaa">"azz") #(输出)True

21.(str).split()
split(str="",num)
以str为分隔符截取字符串,则仅截取num 个字符串

str5 = "sunck*is**a*****good man" print(str5.split("*",4)) #(输出)['sunck', 'is', '', 'a', '****good man']

22.(str).splitlines()
splitlines([keepends]) 按行(’\r’,’\r\n’,’\n’ )分隔,返回
keepends == True 会保留换行符

str40 = """sunck is a good man sunck is a beautiful man sunck is a nice man """ print(str40.splitlines()) #(输出)['sunck is a good man ', 'sunck is a beautiful man ', 'sunck is a nice man '] print(str40.splitlines(True)) #(输出)['sunck is a good man \n', 'sunck is a beautiful man \n', 'sunck is a nice man \n']

23.(str).join()
join(sep)
以指定的字符串分隔符,将sep中的所有元素组合成一个字符串

list41 = ['sunck','is', 'a','good','man'] str42 = "&%".join(list41) print(str42) #(输出)sunck&%is&%a&%good&%man

24.字符串中的max() min()
其实就是按照ASCII来转换成数字进行比较大小。

str43 ="sunck is a good man!z" print(max(str43)) print(min(str43)) #空格为最小 需要下面这种标记才看得到 print("*",min(str43),"*") #(输出) z #此处为空格 * * #两个*中间有一个空格

25.(str).replace()
替换
replace(oldstr,newstr,count)
用newstr替换oldstr,默认是全部替换,如果制定了count,那么直替换前count个

str44 = "AAAA is a good good good boy" str45 = str44.replace("good","nice",1) print(str45) #(输出)sunck is a nice good good man #即将第一个good替换为nice

26.创建一个字符串映射表
(str).maketrans
这里使用str.maketrans函数来创建一个表,它可以使用各种参数,但是需要三个Arguments(参数)。
一对一替换,一个字符对应另外一个字符。替换不可控

t46 =str.maketrans("good","abcd") print(t46) #(输出) {103: 97, 111: 99, 100: 100} #g-a o-b o-c d-d 对面替换 不可控 #103: 97, 111: 99, 100: 100 其实是对应的值,映射的值

(str).translate()
替换字符串

t46 =str.maketrans("good","abcd") print(t46) str47 = "AAAAA is a good good AAA" str48 = str47.translate(t46) print(str48) #(输出) {103: 97, 111: 99, 100: 100} AAAAA is a accd accd AAA

27.(str).starswith()
在一个范围内查找字符串,如果有即返回True,否则False
查找范围,如果没有范围,默认整个字符串。
starswith(str,start=0,end=len(str))

str49 = "sunck is a good good man" print(str49.startswith("sunck",5,16)) #(输出)False

28.(str).endswith()
判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False

str50 = "sunck is a good good man" print(str50.endswith("man")) #(输出)True

29.字符串的编码与解码
编码(str).encode()
encode(encoding=“utf-8”,errors=“strict”)
encoding 默认 utf-8
errors 默认 strict
gbk为国标码
编码用的什么码 解码的时候就要用对应的码解

str51 = "AAAAA is a good good man" data52 = str51.encode() print(str51.encode()) #(输出)b'AAAAA is a good good man' str54 = "AAAAA is a good good man 赵" data55 = str54.encode() print(str54.encode()) #(输出)b'AAAAA is a good good man \xe8\xb5\xb5'

解码(str).decode()
注意:要与编码是的编码格式一致

str51 = "AAAAA is a good good man" data52 = str51.encode() str54 = "AAAAA is a good good man 赵" data55 = str54.encode() str53 = data52.decode() print(str53) #(输出)AAAAA is a good good man str56 = data55.decode() print(str56) #(输出)AAAAA is a good good man 赵

29.(str).isalpha()
检测字符串是否只由字母组成。
判断如果字符传中至少有一个字符(长度大于1) 且所有字符都是字母 返回True
否则返回false

str54 = "sunckisagoodman" print(str54.isalpha()) #(输出)True

30.(str).isalnum()
检测字符串是否只由字母和数字组成。
#如果字符传中至少有一个字符(长度大于1)且所有字符都是字母或者数字返回True,否则返回False。

str55 = "aa123" print(str55.isalnum()) #(输出)True

31.(str).issupper()
检测字符串是否只由大写英文字母或者数字组成。
#如果字符传中至少有一个字符(长度大于1) 且所有的字符都是大写英文字母或者数字返回True,否则返回False。

print("ABC".isupper()) #(输出)True print("ABC1".isupper()) #(输出)True print("ABC#".isupper()) #(输出)True print("ABCa".isupper()) #(输出)False

32.(str).islower()
检测字符串是否只由小写字母组成。
#如果字符传中至少有一个字符(长度大于1) 且所有的字符都是小写字母返回True
,否则返回False

print("ABC".isupper()) #(输出)True print("ABC1".isupper()) #(输出)False print("ABC#".isupper()) #(输出)True print("ABCa".isupper()) #(输出)True

33.(str).istitle()
检测字符串是否首字母大写。
如果字符串是首字母大写的返回True,否则返回False

print("Sunck Is".istitle()) #(输出)True print("sunck is".istitle()) #(输出)False

34.(str).isdigit()
检测字符串是否只由数字组成。
如果字符传中只包含数字,返回True 否则返回False

print("123".isdigit()) #(输出)True print("123a".isdigit()) #(输出)False print("123B".isdigit()) #(输出)False

35.(str).isnumeric ()
检测字符串是否只由数字组成。
如果字符传中只包含数字,返回True 否则返回False

print("1234".isnumeric()) #(输出)True print("1234a".isnumeric()) #(输出)False print("1234A".isnumeric()) #(输出)False

36.(str).isdecimal ()
字符传中只包含十进制字符

print("1234".isdecimal()) #(输出)True print("1234a".isdecimal()) #(输出)False print("1234B".isdecimal()) #(输出)False

36.(str).isspace ()
字符串中只包含空格则返回True,否则返回False

print(" ".isspace()) #(输出)True print(" ".isspace()) #(输出)True print("\t ".isspace()) #(输出)True # \t 四个空格 print("\n".isspace()) #(输出)True print("\r".isspace()) #(输出)True