python3之字符串(string)
一、字符串
字符串是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' in str1 'ASQW' in str1 #判断字符串是否不包含子字符串,不包含返回 True,否则返回 False 'QAZ' not in str2 '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