Python 字符串str
str本质
Python str的本质可以通过help命令查看
可以看到
str的本质是Python模块__builtin__
中的一个类,里面定义了很多的方法。
str特性
Python strings是不能改变的,字符串的值是固定的。因此,给一个字符串的具体下表位置赋值是会出错的:
如果要得到一个不同的字符串,那就得创建一个新的:
可以使用模块__builtin__
中的一个內建函数len()获得字符串的长度:
字符串是可迭代对象
str method
以下函数均为str类里面的成员函数按照功能分类的结果
xmind文件可点这里下载
连接
str.join(iterable)
S.join(iterable) -> string
函数功能
将序列iterable中的元素以指定的字符S连接生成一个新的字符串。
函数示例
查找
str.find(sub[, start[, end]])
S.find(sub [,start [,end]]) -> int
函数功能
和C++的字符串的find函数功能一样。检测字符串中是否存在子字符串sub,如果存在,则返回找到的第一个子串的下标,如果找不到,则返回-1,而C++返回的是string::nops。
函数示例
str.rfind(sub[, start[, end]])
S.rfind(sub [,start [,end]]) -> int
函数功能
和C++的字符串的find函数功能一样。检测字符串中是否存在子字符串sub,如果存在,则返回找到的最后一个子串的下标,如果找不到,则返回-1,而C++返回的是string::nops。
函数示例
str.index(sub[, start[, end]])
S.index(sub [,start [,end]]) -> int
函数功能
与 python find()方法的功能一样,只不过如果子串sub不在S中会报一个异常(ValueError: substring not found)。
函数示例
str.rindex(sub[, start[, end]])
S.rindex(sub [,start [,end]]) -> int
函数功能
与 python rfind()方法的功能一样,只不过如果子串sub不在S中会报一个异常(ValueError: substring not found)。
函数示例
str.count(sub[, start[, end]])
S.count(sub[, start[, end]]) -> int
函数功能
在字符串中查找某个子串出现的次数。start和end是两个可选的参数,表示起止下标位置。python默认下标位置是从0开始的。
函数示例
排版
str.capitalize()
S.capitalize() -> string
- Return a copy of the string S with only its first character capitalized.
函数功能
首字符是字母,返回第一个字母大写,其他不变
函数示例
str.center(width[, fillchar])
S.center(width[, fillchar]) -> string
函数功能
已字符串S为中心,返回width长度的字符串,其中多余部分都是用fillchar来填充。如果width小于或者等于len(S),则返回str本身。如果不给定fillchar这个参数,那么默认填充空格
函数示例
str.ljust(width[, fillchar])
S.ljust(width[, fillchar]) -> string
函数功能
返回一个原字符串左对齐,并使用字符fillchar填充至指定长度width的新字符串。
width – 指定字符串长度
fillchar – 填充字符,默认为空格
函数示例
str.rjust(width[, fillchar])
S.rjust(width[, fillchar]) -> string
函数功能
返回一个原字符串右对齐,并使用字符fillchar填充至指定长度width的新字符串。
width – 指定字符串长度
fillchar – 填充字符,默认为空格
函数示例
str.expandtabs([tabsize])
S.expandtabs([tabsize]) -> string
函数功能
把字符串中的 tab 符号(‘\t’)转为空格,tab 符号(‘\t’)默认的空格数是8,tabsize – 指定转换字符串中的 tab 符号(‘\t’)转为空格的字符数。
函数示例
S.format(*args, **kwargs) -> string
函数功能
格式化字符串变量。2.7版本和3.1版本之后才支持{}这种格式。老版本会报错
ValueError: zero length field name in format
参见:ValueError: zero length field name in format python
函数示例
大小写
str.lower()
S.lower() -> string
转换字符串中所有大写字符为小写
str.upper()
S.upper() -> string
转换字符串中所有小写字符为大写
str.swapcase()
S.swapcase() -> string
函数功能
将字符串的大小写转换。小写转大写,大写转小写
函数示例
分割
str.split([sep[, maxsplit]])
S.split([sep [,maxsplit]]) -> list of strings
函数功能
通过指定分隔符sep对字符串进行切片,如果参数maxsplit有指定值,则仅分隔 maxsplit个子字符串。如果分隔符sep没有给定,则默认以空格分割。
函数示例
str.splitlines([keepends])
S.splitlines(keepends=False) -> list of strings
函数功能
按照行分隔,返回一个包含各行作为元素的列表。如果参数keepends=False后者为空或者为0,则不包含"\n"
,否则包含"\n"
函数示例
str.partition(sep)
S.partition(sep) -> (head, sep, tail)
函数功能
根据指定的分隔符sep将字符串进行分割(返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串)。且分隔符不能为空也不能为空串,否则会报错。
函数示例
修改
str.strip([chars])
S.strip([chars]) -> string or unicode
函数功能
用于移除字符串头尾指定的字符(默认为空格)。如果字符为unicode的,则先把字符串转化为unicode的再进行strip操作。
函数示例
str.lstrip([chars])
S.lstrip([chars]) ->string or unicode
函数功能
用于截掉字符串左边的空格或指定字符。
函数示例
str.rstrip([chars])
S.rstrip([chars]) -> string or unicode
函数功能
用于截掉字符串右边的空格或指定字符。
函数示例
str.replace(old, new[, count])
S.replace(old, new[, count]) -> unicode
函数功能
把字符串中的 old(旧字符串)替换成 new(新字符串),如果指定第三个参数max,则替换不超过 count次。
函数示例
以上替换并不会递归替换,每次都是找到3个a之后替换成两个a,然后继续从3个a后面的位置开始遍历,而不是从头开始遍历。
编码
和编码相关的函数总共就两个str.decode([encoding[, errors]])hestr.encode([encoding[, errors]])
首先了解下和编码相关的几个概念
- str是文本序列
- bytes是字节序列
- 文本是有编码的 (utf-8, gbk, GB18030等)
- 字节没有编码这种说法
- 文本的编码指的是字符如何使用字节来表示
- Python3字符串默认使用utf-8编码
以上对encode和decode的方法的使用中出现了bytes类型。以下是对该类型的简单介绍
- bytes 由str通过 encode方法转化得到
- 通过 b前缀定义bytes
除了encode外, str操作,都有对应bytes的版本, 但是传入参数也必须是bytes
bytes的可变版本bytearray
bytearray 是可变,在图像处理中经常会用到变化的bytes。相对bytes来说, bytearray多了 insert, append, extend, pop, remove, clear reverse这些操作,并且可以索引操作。
判断
str.startswith(prefix[, start[, end]])
函数功能
用于判断字符串是否以指定前缀开头,如果以指定后缀结尾返回True,否则返回False。可选参数”start”与”end”为检索字符串的开始与结束位置。prefix可为tuple。
函数示例
str.endswith(suffix[, start[, end]])
S.endswith(suffix[, start[, end]]) -> bool
函数功能
用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数”start”与”end”为检索字符串的开始与结束位置。suffix可为tuple。
函数示例
str.isalnum()
S.isalnum() -> bool
函数功能
检测字符串是否由字母或数字组成。如果是,返回True,如果有别的字符,则返回False。
字符串不为空,如果为空,则返回False。
函数示例
str.isalpha()
S.isalpha() -> bool
函数功能
检测字符串是否只由字母组成。字符串不为空,如果为空,则返回False。
函数示例
str.isdigit()
S.isdigit() -> bool
函数功能
检测字符串是否只由数字组成。字符串不为空,如果为空,则返回False。
函数示例
str.islower()
S.islower() -> bool
函数功能
检测字符串是否由小写字母组成。
函数示例
str.isupper()
S.isupper() -> bool
函数功能
检测字符串是否由大写字母组成。
函数示例
str.isspace()
S.isspace() -> bool
函数功能
检测字符串是否只由空格组成
函数示例
参考资料
1、Python 2.7.12 documentation
2、Shaw Blog–Python str方法总结
3、hc-Python字符串操作