字符串提供了许多内建的方法,可以为使用提供许多便利。熟悉这些方法,避免重复造轮子。
capitalize() -> str
返回一个将原字符串的第一个字符转换为大写的新字符串,原字符串不改变。
1 2 3 4 5 6 str1 = "hello,world" print (str1.capitalize())""" Hello,world """
center(width:int [, fillchar:str = ' ']) -> str
返回一个指定宽度的字符串并将原字符串置于新字符串中间。缺位用 fillchar
补齐,默认为空格。若宽度小于原字符串宽度则不会做任何处理(会返回原字符串)。
1 2 3 4 5 6 7 8 9 10 11 str1 = "ABCDEFG" print (str1.center(2 ))print (str1.center(20 ))print (str1.center(20 ,'=' ))""" ABCDEFGH ABCDEFGH ======ABCDEFG======= """
count(str:str [, beg:int = 0][, end:int = len(string)]) -> int
返回 str
在字符串里面出现的次数。
beg
:寻找的起始位置 end
:寻找的终止位置
1 2 3 4 5 6 7 8 9 10 11 str1 = "Hello,World" print (str1.count('o' ))print (str1.count('o' ,7 ))print (str1.count('o' ,0 ,6 ))""" 2 1 1 """
encode([encoding:str = 'UTF-8'][,errors:str = 'strict']) -> bytes
指定的编码格式编码字符串。
1 2 3 4 5 6 7 8 9 10 str1 = "��������" print (str1.encode('utf-8' ))print (str1.encode('utf-8' ).decode('gbk' ))""" b'\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd' 锟斤拷锟斤拷锟斤拷锟斤拷 """
支持的编码(均忽略大小写):
UTF-8
,可变长度的编码,可以表示 Unicode
字符集中的所有字符,兼容 ASCII
ASCII
,7二进制位表示128个字符
GBK
,汉字编码标准,用于表示简体中文字符。
Big5
,繁体中文编码标准,用于表示繁体中文字符。
Latin-1 (ISO-8859-1)
,用于西欧语言的编码标准,包含一些特殊字符,如 á、é、ç 等。
endswith(suffix:str [, start:int][, end:int]) -> bool
检查字符串是否以 suffix
结尾。
start
:结尾判定的起始位置 end
:结尾判定的终止位置
1 2 3 4 5 6 7 str1 = "OHHHHHHHHHH!" print (str1.endswith('HH!' ))""" True """
expandtabs([tabsize:int = 8]) -> str
把字符串中的水平制表符转为空格。默认水平制表符长度为8空格,当前位置到开始位置或上一个制表符位置的字符数不足 8 的倍数则以空格代替。返回新字符串,原字符串不受影响。
tabsize
:制表符长度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 str1 = "Hello\tWorld" print ('Default:' , str1.expandtabs())print ('tabsize = 2:' , str1.expandtabs(2 ))print ('tabsize = 3:' , str1.expandtabs(3 ))print ('tabsize = 4:' , str1.expandtabs(4 ))print ('tabsize = 5:' , str1.expandtabs(5 ))print ('tabsize = 6:' , str1.expandtabs(6 ))""" Default: Hello World tabsize = 2: Hello World tabsize = 3: Hello World tabsize = 4: Hello World tabsize = 5: Hello World tabsize = 6: Hello World """
find(str:str [, beg:int = 0][, end:int = len(string)]) -> int
查找 str
在字符串内第一次出现位置的索引,未找到则返回-1。
beg
:寻找的起始位置 end
:寻找的终止位置
1 2 3 4 5 6 7 8 9 10 11 12 13 str1 = "Hello,World" str2 = "or" print (str1.find(str2))print (str1.find(str2, 5 ))print (str1.find(str2, 1 , 6 ))""" 7 7 -1 """
index(str:str [, beg:int = 0][, end:int = len(string)]) -> int
同 find
,只不过在未找到时会抛异常。
isalnum() -> bool
检查字符串是否由字母和数字组成,即字符串中的所有字符都是字母或数字。
1 2 3 4 5 6 7 8 9 10 11 12 13 str1 = "Hello,World" str2 = "Hello World" str3 = "HelloWorld" print (str1.isalnum())print (str2.isalnum())print (str3.isalnum())""" False False True """
isalpha() -> bool
检测字符串是否只由字母或文字组成。
1 2 3 4 5 6 7 8 9 10 str1 = "Hello,World" str2 = "Hello你好" print (str1.isalpha())print (str2.isalpha())""" False True """
isdecimal() -> bool
检测字符串是否只由十进制数字组成。
1 2 3 4 5 6 7 8 9 10 str1 = "114514" str2 = "1E2F" print (str1.isdecimal())print (str2.isdecimal())""" True False """
isdigit() -> bool
检测字符串是否只由数字组成。
1 2 3 4 5 6 7 8 9 10 str1 = "114514" str2 = "homo114514" print (str1.isdigit())print (str2.isdigit())""" True False """
islower() -> bool
检测字符串是否只由小写字符组成(忽略不存在大小写的字符)。
1 2 3 4 5 6 7 8 9 10 str1 = "Homo114514" str2 = "homo114514" print (str1.islower())print (str2.islower())""" True False """
isnumeric() -> bool
方法检测字符串是否只由数字组成,数字可以是: Unicode
数字,全角数字(双字节),罗马数字,汉字数字。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 str1 = '\u00B21234' print (str1.isnumeric())str1 = '\u00BD' print (str1.isnumeric())str2 = "十二" print (str2.isnumeric())str2 = "陆" print (str2.isnumeric())str3 = "Ⅳ" print (str3.isnumeric())""" True True True True True """
isspace() -> bool
检测字符串是否只由空白字符组成。
空格、换行符 \n
、回车符 \r
、水平制表符 \t
均被视为空白字符
1 2 3 4 5 6 7 8 9 10 11 12 13 str1 = " \n\t\r" str2 = "sbksbk bsvbs" str3 = "" print (str1.isspace())print (str2.isspace())print (str3.isspace())""" True False False """
istitle() -> bool
检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写(标题格式)。
1 2 3 4 5 6 7 8 9 10 str1 = "This Is An Example" str2 = "This is an example" print (str1.istitle())print (str2.istitle())""" True False """
isupper() -> bool
方法检测字符串中所有的字母是否都为大写(忽略不存在大小写的字符)。
1 2 3 4 5 6 7 8 9 10 11 12 13 str1 = "UPPER666" str2 = "Upper123" str3 = "114514" print (str1.isupper())print (str2.isupper())print (str3.isupper())""" True False False """
join(iterable:iterable) -> str
将序列中的元素以原字符串连接生成一个新的字符串。
1 2 3 4 5 6 7 8 seq = ("1" ,"1" ,"4" ,"5" ,"1" ,"4" ) str1 = "=" print (str1.join(seq))""" 1=1=4=5=1=4 """
ljust(width:int [, fillchar:str = ' '])
返回一个左对齐的原字符串,左侧宽度不足则用 fillchar
补齐。如果指定的长度小于原字符串的长度则返回原字符串。
1 2 3 4 5 6 7 str1 = "Hello" print (str1.ljust(10 , '+' ))""" Hello+++++ """
lower() -> str
将原字符串的大写字符转为小写。返回新字符串,原字符串不变。
1 2 3 4 5 6 7 str1 = "HELLO" print (str1.lower())""" hello """
lstrip([char:str = ' ']) -> str
用于截掉字符串左边的空格或指定字符。
1 2 3 4 5 6 7 8 9 10 str1 = " 114514" str2 = "66666666这个入是桂" print (str1.lstrip())print (str2.lstrip('6' ))""" 114514 这个入是桂 """
maketrans(x:str, y:str [, z:str]) -> str
or maketrans(x:dict) -> dict
根据特定规则映射字符串中的字符,返回一个字典,包含对应的映射关系。
z
:要删除的字符,字符串会被当做字符的集合
1 2 3 4 5 6 str1 = "Hello,World" print (str1.maketrans("H" ,"N" ))print (str1.maketrans("aeiou" ,"12345" ))print (str1.maketrans({"l" :6 },"d" ))
translate(table:dict) -> str
根据 maketrans
得到的映射表或手动给出的映射表,转换字符串。
1 2 3 4 5 6 7 8 str1 = "Hello,World" trans = str1.maketrans("H" ,"N" ) print (str1.translate(trans))""" Nello,World """
replace(old:str, new:str[, max:int]) -> str
返回一个把原字符串中的 old
(旧字符串)替换成 new
(新字符串)的新字符串,原字符串不变。
max
指定替换次数的上限,未指定则无上限
1 2 3 4 5 6 7 8 9 str1 = "Hello,World" print (str1.replace("World" ,"Python" ))print (str1.replace("o" ,"O" ,1 ))""" Hello,Python HellO,World """
rfind(str:str[, beg:int = 0][, end:int = len(string)])
查找 str
在字符串内第一次出现位置的索引,未找到则返回-1。
整体类似 find
,只不过是从右开始查找。
1 2 3 4 5 6 7 8 9 10 11 12 13 str1 = "Hello,World" str2 = "or" print (str1.rfind(str2))print (str1.rfind(str2, 5 ))print (str1.rfind(str2, 1 , 6 ))""" 7 7 -1 """
rindex(str:str [, beg:int = 0][, end:int = len(string)]) -> int
类似 index
,从右侧开始查找。
rjust(width:int [, fillchar:str = ' '])
类似 ljust
,只不过是右对齐,填充字符在左侧。
rstrip([char:str = ' ']) -> str
去除原字符串右侧的空格或指定字符,使用方法同 lstrip
。
split([str:str = ""][, num:int = string.count(str)])
在原字符串的 str
位置切割,会移除 str
。
num
指定最大切割次数,未指定则不限制。
1 2 3 4 5 6 7 8 9 str1 = "I will never gonna give you up" print (str1.split(' ' ))print (str1.split('e' ,2 ))""" ['I', 'will', 'never', 'gonna', 'give', 'you', 'up'] ['I will n', 'v', 'r gonna give you up'] """
splitlines([keepends:bool = False])
按照行切割字符串(以换行符 \n
、回车符 \r
作为行分隔符)。
keepends
控制是否保留换行符
1 2 3 4 5 6 7 8 9 str1 = "ab c\n\nde fg\rkl\r\n" print (str1.splitlines())print (str1.splitlines(True ))""" ['ab c', '', 'de fg', 'kl'] ['ab c\n', '\n', 'de fg\r', 'kl\r\n'] """
startswith(prefix:str [, start:int][, end:int]) -> bool
检查字符串是否以 prefix
开头。
start
:开头判定的起始位置 end
:开头判定的终止位置
1 2 3 4 5 6 7 str1 = "OHHHHHHHHHH!" print (str1.endswith('OH' ))""" True """
strip([char:str]) -> str
在字符串上同时执行 lstrip
和 rstrip
swapcase() -> str
将字符串中大写转换为小写,小写转换为大写.
1 2 3 4 5 6 7 str1 = "AbCdeFG" print (str1.swapcase())""" aBcDEfg """
title() -> str
将字符串转为标题格式。
1 2 3 4 5 6 7 str1 = "hello world" print (str1.title())""" Hello World """
upper() -> str
将原字符串的小写字符转为大写。返回新字符串,原字符串不变。
1 2 3 4 5 6 7 str1 = "hello" print (str1.upper())""" HELLO """
zfill(width:int) -> str
返回指定宽度的右对齐字符串,左侧缺位用0补齐,指定宽度小于原字符串长则返回原字符串。
等效于 rjust(width,'0'])
1 2 3 4 5 6 7 str1 = "Hello" print (str1.zfill(10 ))""" 00000Hello """