一、字符串
字符串是Python中最常用的数据类型
Python中的字符串必须用引号括起来,单引号或双引号都可以,两者没有任何区别
字符串是不可更改类型
1 普通字符串
str = 'value'str= "value"str= '''value'''str= """value"""三个引号时,字符串的值可以跨行
2 转义字符
\(在行尾时) 续行符
\\ 反斜杠符号(\)
\'单引号
\"双引号
\n 换行
\t 横向制表符
\r 回车
\a 响铃
\b 退格
\000或\0 空
\v 纵向制表符
\f 换页
\0yy yy是两个八进制数,\012表示换行
\xyy yy是两个十六进制数,\x0a表示换行
\other other是除以上列举的其它字符,其它字符则以普通格式输出
3 原始字符串
把转义字符当做普通字符处理
str= r'value'value按照字面的意思使用,没有转义特殊或不能打印的字符
原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法
二、字符串操作
1 索引
str = r'https://docs.python.org/release/3.8.4/tutorial/introduction.html'
#从str中取出index=4的单个字符
str[4]#从str取出倒数第8个字符,最右边字符的index=-1
str[-8]#切片,从str取出index范围为[6,15)(不包括15)的子字符串
str[6:15]#切片,从str取出index范围为[3,-4)(不包括-4)的子字符串
str[3:-4]#切片,从str取出index范围为[-7,-2)(不包括-2)的子字符串
str[-7:-2]
单个字符时,超出索引会引发IndexError异常
切片时,超出索引不会引发异常
2 运算
str1 = 'asdTE'str2= 'QAZcd'
#字符串拼接
str3 = (str1 +str2)#重复字符串4次
str4 = str1 * 4
#获取字符串的长度
len(str4)#判断字符串是否包含子字符串,包含返回 True,否则返回 False
'dT' instr1'ASQW' instr1#判断字符串是否不包含子字符串,不包含返回 True,否则返回 False
'QAZ' not instr2'RTY' not in str2
三、字符串方法
1 计数、格式转化
str.center(width, fillchar)#字符串两边填充字符并居中,返回长度为width的字符串#width: 宽度,整数,小于等于len(str),返回str#fillchar: 可选参数,填充字符,默认空格
str.count(sub, start, end)#[start, end)范围内(不包括end),返回子字符串sub在字符串中出现的次数#start,end: 可选参数,默认范围 range(0,len(str))
str.encode(encoding='utf-8', errors='strict')#返回以encoding编码格式的字节串#encoding: 编码格式,默认utf-8#errors: 编码错误时处理方案,默认strict: 编码错误会引发 UnicodeError 异常,其他值: 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace'
str.format(*args, **kwargs)#字符串格式化
2 开头、结尾
str.endswith(suffix, start, end)#[start, end)范围内(不包括end),字符串是否以suffix结尾,若是返回 True,否则返回 False#start, end: 可选参数,默认范围 range(0,len(str))
str.startswith(prefix, start, end)#[start, end)范围内(不包括end),字符串是否以prefix开头,若是返回 True,否则返回 False#start, end: 可选参数,默认范围 range(0,len(str))
3 查找、替换
str.find(sub, start, end)#[start, end)范围内(不包括end),返回子字符串sub第一次出现的索引值,否则返回-1#start, end: 可选参数,默认范围 range(0,len(str))
str.index(sub, start, end)#类似于str.find(),但是找不到子字符串sub时会引发 ValueError 异常
str.replace(old, new, count)#返回 new 替换 old 后的字符串,不改变原来的字符串#count: 最多替换次数,默认替换所有
4 判断
str.isalnum()#字符串非空,且所有字符都是字母或数字,返回 True,否则返回 False
str.isalpha()#字符串非空,且所有字符都是字母,返回 True,否则返回 False
str.isascii()#字符串空,或者所有字符都是ASCII,返回 True,否则返回 False
str.isdecimal()#字符串非空,且所有字符都是十进制字符,返回 True,否则返回 False
str.isdigit()#字符串非空,且所有字符都是数字,返回 True,否则返回 False
str.isnumeric()#字符串非空,且只包含数字字符,则返回 True,否则返回 False
str.islower()#字符串至少包含一个区分大小写的字符,且所有字符都是小写,返回 True,否则返回 False
str.istitle()#字符串至少包含一个区分大小写的字符,且每个单词首字母都是大写,返回 True,否则返回 False
str.isupper()#字符串至少包含一个区分大小写的字符,且所有字符都是大写,返回 True,否则返回 False
str.isspace()#字符串非空,且字符串中只有空白字符,返回 True,否则返回 False
5 大小写
str.title()#返回将字符串每个单词首字母大写后的新字符串,不改变原来的字符串
str.lower()#返回将字符串所有字母小写后的新字符串,不改变原来的字符串
str.upper()#返回将字符串所有字母大写后的新字符串,不改变原来的字符串
6 删除
str.strip(chars)#返回删除字符串前后(不包括中间)包括chars所有组合后的新字符串,不改变原来的字符串#chars: 要删除的字符的所有组合,默认空格
str.lstrip(chars)#返回删除字符串前面(左边)包括chars所有组合后的新字符串,不改变原来的字符串#chars: 要删除的字符的所有组合,默认空格
str.rstrip()#返回删除字符串后面(右边)包括chars所有组合后的新字符串,不改变原来的字符串#chars: 要删除的字符的所有组合,默认空格
7 分隔、拼接
str.split(sep=None, maxsplit=-1)#使用分隔符sep将字符串分隔,并返回一个列表#sep: 分隔符#maxsplit: 分割字符串的长度,未指定maxsplit或-1则分割全部字符串#如:'I am boy'.split('a')输出['I ', 'm boy']
str.join(iterable)#将iterable中所有的元素以str作为分隔符合并拼接,并返回为一个新的字符串#iterable包含任何非字符串值时(包括字节串),会引发 TypeError 异常#如: '-'.join(['a','b','c'])输出a-b-c