字符串是一个有序的字符集合,即字符序列。Pythpn内置数据类型str,用于字符串处理,使用单引号或双引号括起来的字符,就是字符常量,Python解释器会自动创建str型对象实例。
字符串的定义:
1、单引号:包含在单引号中的字符串,其中可以包含双引号
2、双引号:包含在双引号中的字符串,其中可以包含单引号
3、三单引号:包含在三单引号中的字符串,可以跨行
4、三双引号:包含在三双引号中的字符串,可以跨行
字符串的基本操作,包括索引访问、切片操作、成员关系操作、比较运算操作等。
一、字符串类型判断
str.isalnum() # 是否全为字母或数字 str.isalpha() # 是否全为字母 str.isdecimal() #是否只包含十进制数字字符 str.isdigit() #是否全数字(0-9) str.isidentifier() #是否是合法标识 str.islower() #是否全小写 str.isupper() #是否全大写 str.isnumeric() #是否只包含数字字符 str.isprintable() #是否只包含可打印字 str.isspace() #是否只包含空白字 str.istitle() #是否为标题,即个单词首字母大写
二、大小写转换
str.capitalize() #转换为首字母大写,其余小写 str.lower() #转换为小写 str.upper() #转换为大写 str.swapcase() #大小写互换 str.title() #转换为个单词首字母大写 str.casefold() #转换为大小写无关字符串比较的格式字符串
三、填充、空白和对齐
str.strip([chars]) #去掉两边空格,也可以指定要去除的字符列表 str.lstrip([chars]) #去掉左边空格,也可以指定要去除的字符列表 str.rstrip([chars]) #去掉右边空格,也可以指定要去除的字符列表 str.zfill(width) #左填充,使用0填充到width长度 str.center(width[,fillchar]) #两边填充,使用填充字符fillchar(默认空格)填充到width长度 str.ljust(width[,fillchar]) #左填充,使用填充字符fillchar(默认空格)填充到width长度 str.rjust(width[,fillchar]) #右填充,使用填充字符fillchar(默认空格)填充到width长度 str.expandtabs([tabsize]) #将字符串中的制表符(tab)扩展为若干个空格,tabsize默认为8
四、测试、查找和替换
str.startswith(prefix[,start[,end]]) #是否以prefix开头 str.endswith(suffix[,start[,end]]) #是否以suffix开头 str.count(sub[,start[,end]]) #返回指定字符串出现的次数 str.index(sub[,start[,end]]) #搜索指定字符串,返回下标,无则导致ValueError str.rindex(sub[,start[,end]]) #从右边开始搜索指定字符串,返回下标,无则导致ValueError str.find(sub[,start[,end]]) #搜索指定的字符串,返回下标。没有则返回-1 str.rfind(sub[,start[,end]]) #从右边开始搜索指定字符串,返回下标,没有则返回-1 str.replace(old,new[,count]) #替换old为new,可选count为替换次数
五、拆分和组合
str.split(sep=None,maxsplit=-1) #按指定字符(默认为空格)分隔字符串,返回列表。maxsplit为最大分隔次数,默认-1,无限制 str.rsplit(sep=None,maxsplit=-1) #从右侧按指定字符分隔字符串,返回列表 str.partition(sep) #根据分隔符sep分隔字符串为两部分,返回元组(left,sep,right) str.rpartition(sep) #根据分隔符sep从右侧分隔字符串为两部分,返回元组(left,sep,right) str.splitlines([keepends]) #按行分隔字符串,返回列表 str.join(iterable) #组合iterable中的各元素成字符串,若包含非字符串元素,则导致TypeError
六、翻译和转换
str.maketrans(x[,y[,z]]) #创建用于translate的转换表 str.translate(map) #根据map转换 table1 = str.maketrans('1234567','一二三四五六日') s1 = '1,3,4,9' print(s1.translate(table1))
# 输出结果
一,三,四,9
七、字符串编码
默认情况下,Python字符串采用utf-8编码。创建字符串时,也可以指定其编码方式:
b.decode(encoding,errors) #把字节码对象b解码为对应编码的字符串
s.encode(encodeing = 'utf-8',errors="strict") #把字符串对象s编码为字节码对象
代码示例:
# Author:Zhanghk s = 'Hello!中国!' # 字符串默认编码格式为utf-8 e = s.encode(encoding='gbk') # 我们将字符串s以“gbk”格式编码成“字节码”,并赋值给e print(s) print(e) d = e.decode(encoding='gbk') # 我们将字节码e进行解码,并告知系统我们是以“gbk”格式编码的字节码 print(d) # 输出结果 Hello!中国! b'Hello!xd6xd0xb9xfaxa3xa1' Hello!中国!
如果我们在解码时不进行指定原编码格式,会出现如下错误:
Hello!中国! Traceback (most recent call last): File "E:/python/s14/字符串编码.py", line 10, in <module> b'Hello!xd6xd0xb9xfaxa3xa1' d1 = e.decode() # 我们将字节码b进行解码,并告知系统我们是以“gbk”格式编码的 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 6: invalid continuation byte
错误内容如下:
编码格式错误:‘utf-8’ 格式不能解码字节类型为 0xd6 开头的6个位置的字节码:无效的连续的字节