Python3之字符串
基础内容
- 创建:为变量分配一个值即可
- 单行:‘xxx’ 或 “xxx”
- 多行:""" 或 ‘’’
- 访问:使用方括号来截取字符串,var[i], var[:]
- 不支持单字符类型,单字符也作为一个字符串
- 所有字符串都是 Unicode 字符串
转义字符
在字符串中使用特殊字符时,用反斜杠 \ 转义字符
转义字符 | 描述 |
---|---|
\(在尾行时) | 续行符 |
\\ | 反斜杠 |
\’ | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy 代表的字符,如 \o12代表换行 |
\xyy | 十六进制数, yy 代表的字符 |
\other | 其它的字符以普通格式输出 |
运算符
操作符 | 描述 |
---|---|
+ | 连接 |
* | 重复 |
[] | 通过索引获取字符 |
[ : ] | 截取一部分,[start, end),[:]表示全部 |
in | 包含给定字符返回True |
not in | 不包含给定字符返回False |
r/R | 原始字符串,没有转义特殊或不能打印的字符, r"xxx", r’xxx’ |
% | 格式字符串 |
格式化
将一个值插入到一个有字符串格式符的字符串中
“xxxxxx” % (xx, xx, …)
- 格式化符号:
符号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x, %X | 格式化无符号十六进制数 |
%f | 格式化浮点数字,可指定小数精度 |
%e, %E | 用科学计数法格式化浮点数 |
%g | %f 和 %e 的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
- 辅助指令
符号 | 描述 |
---|---|
* | 定义宽度或者小数点精度 |
- | 左对齐 |
+ | 在整数前面显示加号(+) |
< sp > | 在整数前面显示空格 |
# | 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’) |
0 | 显示的数字前面填充’0’ |
% | ‘%%‘输出一个单一的’%’ |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
其它:格式化字符串的函数 str.format(),通过 {} 和 : 代替 %
内建函数
- len(str)
- 字符串长度
- max(str)
- 返回字符串中的最大字符(ASCII码最大)
- min(str)
- 返回字符串中的最小字符(ASCII码最小)
大小写相关:
- str.capitalize()
- 首字符大写,其它小写
- 若首字符非字符,则全转成小写
- str.lower()
- 转换所有大写字符为小写
- str.swapcase()
- 对字符串的大小写字母进行转换
- str. title()
- 所有单词都首字母大写,其它小写
- str.upper()
- 将字符串中的小写字母转为大写字母
填充、截取相关:
- str.center(width, fillchar)
- 返回指定宽度 width 居中的字符串
- width < len(str),则返回 str
- 使用 fillchar 填充,默认为空格
- fillchar 为单字符
- str.ljust(width[, fillchar])
- 字符串左对齐,使用字符填充至指定长度
- width < len(str), 则返回原字符串
- fillchar:填充字符,默认为空格
- str.rjust(width [, fillchar])
- 字符串右对齐,使用字符填充至指定长度
- width < len(str), 则返回原字符串
- fillchar:填充字符,默认为空格
- str.zfill(width)
- 返回指定长度的字符串,原字符串右对齐,前面填充0
- width < len(str), 则返回原字符串
- 等同 str.rjust(width, “0”)
- str.lstrip([chars])
- 截掉字符串左边的空格或指定字符
- str.rstrip([chars])
- 截掉字符串右边的空格或指定字符
- str.strip([chars])
- 截掉字符串头尾指定的字符,默认为空格
查找相关:
- str.count(sub, start=0, end=len(str))
- 统计字符串里某字符出现的次数
- sub 搜索的子字符串
- str.startswidth(suffix, start=0, end=len(str))
- 判断是否以指定后缀开头
- suffix:一个字符串或一个元素
- str.endswith(suffix, start=0, end=len(str)
- 判断是否以指定后缀结尾
- suffix:一个字符串或一个元素
- str.find(str, start=0,end=len(str))
- 检测是否包含子串
- 包含则返回起始位置的索引,否则返回 -1
- str.rfind(sub, start=0, end=len(str))
- sub:查找的字符串
- 返回最后一次出现的位置,没有则返回 -1
- str.index(str, beg=0,end=len(string))
- 作用同 find()
- 不包含时抛出异常
替换相关:
- str.expandtabs(tabsize=8)
- 把字符串中的 tab 符号(’\t’)转为空格
- str.replace(old, new [, max])
- 将old替换成new, 不超过max次
连接、分隔:
- str.join(seq)
- 将序列中的元素以指定的字符连接生成一个字符串
- str:连接的字符
- seq:要连接的序列,包括字符串(连接单字符)、集合、元组、字典(连接 key )
- seq 中的元素必须是字符串,否则会报错
- str.split(splitstr="", num=string.count(str))
- 通过指定分隔符对字符串进行切片
- splitstr:分隔符,默认为所有空字符,包括空格、换行、制表符
- num:分割次数,分隔为 num+1 个子字符串
- str.splitlines([keepends])
- 按照行(’\r’, ‘\r\n’, ‘\n’)分隔
- 返回一个包含各行作为元素的列表
- keepends:是否保留换行符
判断组成:
- str.isalnum()
- 是否由字母和数字组成
- 至少有一个字符,且都是字母和数字,返回 True
- str.isalpha()
- 是否只由字母组成
- 至少有一个字符,且都是字母,返回 True
- str.isdigit()
- 是否只由数字组成
- 至少有一个字符,且都是数字,返回 True
- str.islower()
- 是否由小写字母组成
- 至少有一个区分大小写字符,且其都是小写字母,返回 True
- str.isnumeric()
- 是否只由数字组成,仅针对 unicode 对象
- 至少有一个字符,且都是数字,返回 True
- str.isdecimal()
- 检查是否只包含十进制字符,仅对 unicode 对象
- str.isspace()
- 是否只由空白字符组成
- str.istitle()
- 是否所有单词拼写均为首字母大写,其它小写
- str.isupper()
- 是否所有字母都大写
- 至少一个区分大小的字符,且其都是大写,返回 True
编码相关:
- bytes.decode(encoding=“utf-8”, errors=“strict”)
- 以指定的编码格式解码 bytes 对象
- errors 的可能值:‘strict’, ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值
- str.encode(encoding=‘UTF-8’, errors=‘strict’)
- 以指定的编码格式编码 bytes 对象
- errors 同 decode()
翻译替换:
- (str 或 bytes 或 bytearray).marktrans(intab, outtab)
- 创建字符映射的转换表
- intab:字符串中要替代的字符组成的字符串
- outtab:相应的映射字符的字符串
- 两者长度相同,一一对应
- (str 或 bytes 或 bytearray).translate(table[, delete])
- 根据 table 给出的表转换字符串的字符,根据delete过滤字符
- table:翻译表,通过maketrans()转换而来
- delete:字符串中要过滤的字符列表
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)
str = "this is string example....wow!!!"
print (str.translate(trantab)) # th3s 3s str3ng 2x1mpl2....w4w!!!