字符串是不可变类型
不能对str[0]
等直接赋值
- 只能用字符串的各种方法进行操作
- 或是转化为列表来操作
list(str)
或str.split(分隔符)
列表转字符串''.join(list)
- 或用切片拼接
'A'+s[1:]
来获得'A12345'
Python字符串支持用
+
操作符拼接、用*
操作符重复某段字符
转义字符
Python中字符串并非所见即所得
\
用来转义一些特殊字符(否则它们不能正常放在字符串中),例如'\n'
换行符,'\''
表示一个'
符号,'\t'
、'\"'
、'\\'
等
可在字符串前加r
,标记原始字符串,则打印时所见即所得
>>> print('I\'m Niko')
I'm Niko
>>> print(r'I\'m Niko')
I\'m Niko
切片
字符串切片同样遵循[start:stop:step]
,注意不包括stop
>>> s='012345'
>>> s[0:2] #注意,这里仅仅是取出s[0]s[1]
'01'
>>> s[-2:] #支持负数的下标
'45'
>>> s[::-1] #反转
'543210'
常用字符串方法
str.count(substr)
求子串出现次数startswith(str)
若字符串以str开头,返回True
endswith(str)
若字符串以str结束,返回Truestr.find(x[, start[, end]])
找出x的第一次出现的下标,失败返回-1
str.rfind(x[, start[, end]])
(从右向左)找出x的第一次出现的下标,失败返回-1
str.rindex(str, beg=0 end=len(string))
同上,失败抛出异常list\tuple\str.index(x[, start[, end]])
找出x的第一次出现的下标,失败抛出异常(find只能用于字符串,此方法更普适)str.replace(str1, str2, num=string.count(str1))
,将str1替换为str2,可以限制最大替换次数numstr.split(分隔符)
字符串转列表、'[分隔符]'.join(list)
列表转字符串strip()
修剪字符串首尾的空白(空格、制表符、换行符)
rstrip()
、lstrip()
删除右侧\左侧的空白
也可以指定需要删除哪些字符,如'abccbaEEEbac'.strip('abc')
得到'EEE'
upper()
、lower()
所有字母转为大写/小写(注意,这并不改变原str)string.swapcase()
翻转大小写
isupper()
、islower()
判断是否所有字母是大写/小写capitalize()
将所有字母变为小写后,再将第一个字母变为大写
如'dFFF FDf fdFFF'.capitalize()
得到'Dfff fdf fdfff'
string.title()
将字符串中所有单词的首字母变为大写,其余字母小写
istitle()
若非空字符串中的所有单词,都满足首字母大写、其他字母小写,返回Trueisalpha()
若非空字符串只含有字母,返回True
isdecimal()
若非空字符串只含有数字,返回True
isalnum()
若非空字符串只含有数字和字母,返回True
isspace()
若非空字符串只含有空格\制表符\换行符,返回True
注意,
int()
只能将数字str转数字,int(非数字str)会报错
此时就需要预先检查:
'123'.isdecimal()
只识别0-9数字
'²'.isdigit()
比isdecimal()
更广的范围,包括上标数字(如 ²)或其他特殊数字形式
'Ⅷ'.isnumeric()
、'四'.isnumeric()
都是True,识别范围最广,涵盖所有 Unicode 数字字符,包括罗马数字、中文数字等
rjust()
右对齐,ljust()
左对齐,center()
居中
如'abc'.rjust(10)
,默认在左侧用7个空格填充
也可以指定填充符号,如'abc'.center(9,'*')
str.zfill(width)
左侧填充0以达到指定宽度
该方法主要用于数字补零处理,如果字符串以符号(+ 或 -)开头,零会填充在符号之后
例如'-3'.zfill(5) = '-0003'
;
将数字3变为4位二进制表示:
'bin(3)[2:].zfill(4)'=‘0011’