文章目录
Python常用对象之字符串操作手册
详细介绍操作字符串的内置函数、运算符、字符串方法、特殊字符串等
常用对象使用标记
因为字符串是不可变类型, 所以对字符串的所有修改都不会修改原字符串, 而是返回一个新的副本
内置函数
函数 | 说明 | 原型 |
---|---|---|
len | 获取容器元素数, 在字符串中为获取字符串长度 | len(obj) -> int |
sorted | 排序, 返回一个排序后的新列表 | sorted(iterable, key=None, reverse=False) -> List |
reversed | 反转, 返回反向迭代器 | reversed(sequence) -> Iterator |
int, float, list, tuple, … | 类型转换, 转换失败将抛出ValueError异常 |
示例: len、sorted、reversed
# >>> 表示交互输入
# <<< 表示交互输出
>>> s = 'hello world' # 定义一个字符串s
>>> len(s) # 获取字符串长度
<<< 11 # 字符串长度
>>> sorted(s) # 字符串排序, 默认按字符编码升序排序
<<< [' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w'] # 排序结果
>>> ''.join(sorted(s)) # 排序并转为字符串, 此方法后面会讲到
<<< ' dehllloorw' # 转换结果
>>> reversed(s) # 反转字符串
<<< <reversed at 0x1d0c3a35dc8> # 返回的反向迭代器对象, 可以进行for循环或者转换为list列表等
>>> ''.join(reversed(s)) # 反转并转为字符串
<<< 'dlrow olleh' # 转换结果
运算符
运算符 | 说明 | 原型 |
---|---|---|
+ | 连接字符串, 返回新的字符串 | __add__(self, value) -> str |
+= | 连接字符串, 将结果赋值给左表达式 | __iadd__(self, value) -> None |
* | 重复字符串, 返回新的字符串 | __mul__(self, value) -> str |
% | 字符串格式化, 返回格式化后的字符串 | __mod__(self, value) -> str |
== | 比较字符串, 判断字符串是否相同, 返回bool值True或False | __eq__(self, value) -> bool |
!= | 比较字符串, 判断字符串是否不相同, 返回bool值True或False | __ne__(self, value) -> bool |
in | 判断字符串是否包含子字符串, 返回bool值True或False | __contains__(self, value) -> bool |
not in | 判断字符串是否不包含子字符串, 返回bool值True或False | |
>, < … | 不常用 |
示例: +、+=、*、%、==、in
# >>> 表示交互输入
# <<< 表示交互输出
>>> s = 'hello' # 定义一个字符串s
>>> s + 'world' # 连接字符串, 返回一个新字符串
<<< 'helloworld' # 连接结果, 返回值
>>> s # 查看s
<<< 'hello' # 字符串本身不会改变
>>> s += 'world' # 连接字符串, 将结果赋值给s
>>> s # 查看s
<<< 'helloworld' # 现在s是一个新的字符串
>>> '*' * 5 # 将'*'重复5次, 返回新的字符串
<<< '*****' # 返回值
>>> s = '%d+%d=%d' # 定义一个格式化字符串
>>> s % (1, 2, 1+2) # 格式化字符串, 返回格式化后的字符串
<<< '1+2=3' # 格式化结果, 返回值
>>> s = 'abc'
>>> s == 'abc' # 比较字符串, 返回比较结果
<<< True
>>> s == 'cba'
<<< False
>>> s = 'hello world'
>>> 'world' in s # 判断字符串s是否包含'world'
<<< True
字符串方法: Python所有字符串方法详解
原型中[]内的参数表示可选参数
注意: 空字符串不作为任何判断依据, 空字符串用作判断永远返回False
分类 | 方法 | 说明 | 原型 |
---|---|---|---|
统计 | count | 统计子字符串出现次数 统计子字符串sub在字符串S的start-end索引范围内出现的次数 | S.count(sub[, start[, end]]) -> int |
判断 | startswith | 判断开头 判断字符串S是否以prefix开头 | S.startswith(prefix[, start[, end]]) -> bool |
endswith | 判断结尾 判断字符串S是否以suffix结尾 | S.endswith(suffix[, start[, end]]) -> bool | |
islower | 判断是否为小写字符串 注意: 仅英文字母作为判断依据, 特殊字符与中文等不作为判断依据 | S.islower() -> bool | |
isupper | 判断是否为大写字符串 注意: 仅英文字母作为判断依据, 特殊字符与中文等不作为判断依据 | S.isupper() -> bool | |
isspace | 判断是否为空白字符(空格, \r, \n, \t等) | S.isspace() -> bool | |
istitle | 判断是否为标题字符串 (每个单词首字母大写) | S.istitle() -> bool | |
isdecimal | 判断是否为十进制数 (是否能转为int) | S.isdecimal() -> bool | |
isdigit | 判断是否为十进制数 (支持全角字符如: ‘10’) | S.isdigit() -> bool | |
isnumeric | 判断是否为十进制数 (支持全角字符与中文字符等如: ‘十三’) | S.isnumeric() -> bool | |
isalnum | 判断是否为字母或十进制整数 (整数判断标准与isnumeric相同) | S.isalnum() -> bool | |
isalpha | 判断是否为字母 (中文字符也判断为字母) | S.isalpha() -> bool | |
isprintable | 判断是否不包含特殊字符 (\r, \n, \t等) | S.isprintable() -> bool | |
查找和替换 | find | 查找字符串 在字符串S的start-end索引范围内查找子字符串sub 找到返回子字符串sub的起始索引, 未找到返回-1 | S.find(sub[, start[, end]]) -> int |
rfind | 从右侧开始查找字符串 | S.rfind(sub[, start[, end]]) -> int | |
index | 查找字符串 未找到抛出ValueError异常 | S.index(sub[, start[, end]]) -> int | |
rfind | 从右侧开始查找字符串 未找到抛出ValueError异常 | S.rindex(sub[, start[, end]]) -> int | |
replace | 替换字符串 在字符串S中将old子字符串替换为new字符串, 替换count次 默认全部替换, 返回替换后的字符串 | S.replace(old, new, count=-1) | |
expandtabs | 替换制表符 将字符串S中的所有制表符(\t)替换为tabsize个空格 返回替换后的字符串 | S.expandtabs(tabsize=8) -> str | |
format | 字符串格式化 返回格式化后的字符串 示例: ‘{} + {} = {}’.format(1, 2, 1+2) # 顺序格式化 示例: ‘hello {name}’.format(name=‘Xiaoming’) # 关键字格式化 | S.format(*args, **kwargs) -> str | |
format_map | 字符串格式化 类似format关键字格式化, 参数使用字典 | S.format_map(mapping) -> str | |
大小写转换 | lower | 转为小写字符串 返回转换后的字符串 | S.lower() -> str |
upper | 转为大写字符串 返回转换后的字符串 | S.upper() -> str | |
swapcase | 反转大小写 将字符串S中的大小转为小写, 小写转为大写, 返回转换后的字符串 | S.swapcase() | |
title | 转为标题字符串 (所有单词首字母大写) | S.title() -> str | |
capitalize | 将字符串首个单词的首个字母转为大写 | S.capitalize() -> str | |
casefold | 转为小写字符串 国内环境用不到, 用lower即可 | S.casefold() -> str | |
文本对齐 | center | 居中对齐 使用fillchar在字符串S前后填充到width长度 返回填充后的字符串 示例: ‘abc’.center(9, ‘=’) # 结果 ‘===abc===’ | S.center(self, width, fillchar=’ ') -> str |
ljust | 左对齐 (在右侧填充) 示例: ‘abc’.ljust(5, ‘=’) # 结果 ‘abc==’ | S.ljust(self, width, fillchar=’ ') -> str | |
rjust | 右对齐 (在左侧填充) | S.rjust(self, width, fillchar=’ ') -> str | |
去重空白(指定)字符 | strip | 去除首尾空白字符 将字符串S首尾所有chars字符去除 (默认为所有空白字符) | S.strip(chars=None) -> str |
lstrip | 去除首部空白字符 | S.lstrip(chars=None) -> str | |
rstrip | 去除尾部空白字符 | S.rstrip(chars=None) -> str | |
拆分和连接 | join | 连接字符串 使用字符串S来连接字符串可迭代对象iterable (列表等) 示例: ‘+’.join([‘1’, ‘2’, ‘3’]) # 结果 ‘1+2+3’ | S.join(iterable) -> str |
split | 分割字符串 使用sep作为分隔符分割字符串S分割maxsplit次 sep默认为所有空白字符 maxsplit默认为全部分割 返回分割后的字符串列表 | S.split(sep=None, maxsplit=-1) -> List | |
rsplit | 分割字符串 从右边计算分割次数 | S.rsplit(sep=None, maxsplit=-1) -> List | |
splitlines | 按行分割字符串 keepends指定分割后是否保留分隔符 返回分割后的字符串列表 | S.splitlines(keepends=False) | |
partition | 分割字符串 使用字符串sep作为分隔符将字符串S分割为三部分 第一部分: 分隔符之前的字符串 第二部分: 分隔符 第三部分: 分隔符之后的字符串 返回分割后的元组字符串 | S.partition(sep) -> Tuple | |
rpartition | 分割字符串 从右侧开始寻找sep | S.rpartition(sep) -> Tuple | |
编码转换 | encoding | 字符串编码 使用encode编码格式对字符串进行编码, 返回编码后的字节数组bytes对象 解码使用bytes对象的decode方法 | S.encode(encoding=‘utf-8’, errors=‘strict’) -> bytes |
其它方法 | str.maketrans | 创建字符编码映射 将x中的字符编码映射为y中的字符编码, 如果指定了z则x中与z相同的字符将映射为None 返回映射后的字典 示例: str.maketrans(‘abc@’, '123 ', ‘@’) # 结果 {97: 49, 98: 50, 99: 51, 64: None} | str.maketrans(x, y=None, z=None) -> Dict |
translate | 编码翻译 使用str.maketrans创建的编码字典翻译字符串S 返回翻译后的字符串 示例:‘abc’.translate(str.maketrans(‘abc’, ‘123’)) # 结果 ‘123’ | S.translate(table) -> str | |
zfill | 用0填充字符串 将字符串S前面填充0, 返回width长度的字符串 | S.zfill(width) -> str |
特殊字符串: 原始字符串、二进制字符串、格式化字符串
特殊字符串 | 说明 |
---|---|
r’C\1.txt’ | 原始字符串, 原始字符串中的特殊字符不会转义 |
b’abc’ | 二进制字符串, 只能为ansi码字符 |
f’hello {name}’ | 格式化字符串, 执行时自动使用同名变量填充 |
如果您觉得此文章对您有所帮助, 请帮我点赞哦~