字符串处理相关 API
字符串是 7 种序列类型中的一种.
除了序列的操作函数, 比如 len() 来求字符串长度之外, Python 还为字符串提供丰富到可以写个编辑器的 API.
查找类 API
首先, 下面的查找 API 都是为了查找位置, 或者查一共有几次这样的操作.
如果只是想判断一个字符串是不是另一个字符串的子串的话, 使用序列的 in 运算符就可以了.
例:
数数有多少个匹配的字符串 - count 函数
原型: str.count(sub[, start[, end]])
sub: 要查找的子字符串
start: 起始位置
end: 结束位置
字符串的 count 函数可以数出来有多少次匹配, 我们看个例子, 有 5 个 ha 和 3 个 hei
- str1 = "hahahahaha,heiheihei"
- print(str1.count('ha'))
- print(str1.count('haha'))
输出为 5 和 2.
haha 只能匹配两次.
再加上扩展参数:
- print(str1.count('ha',1))
- print(str1.count('ha',0,5))
不抛异常的查找 find 和 rfind
find 函数的行为是, 如果能找到, 则返回在序列中的坐标, 如果找不到, 则返回 - 1. rfind 是从右向左查找. 我们来看例子:
- print(str1.find('haha'))
- print(str1.rfind('haha'))
输出值为 0 和 6.
找不到的例子:
- print(str1.find('hoho'))
- print(str1.rfind('hi'))
输出值都是 - 1.
完整形式:
- str.find(sub[, start[, end]])
- str.rfind(sub[, start[, end]])
会抛异常的查找: index 和 rindex
index 和 rindex 的功能与 find 和 rfind 基本上一致, 除了在找不到时会抛出 ValueError 异常而不是返回 - 1.
例:
- >>> str1 = "hehe"
- >>> str1.index('ha')
- Traceback (most recent call last):
- File "", line 1, in
- ValueError: substring not found
所以我们需要加 try...except 语句来处理之:
- try:
- str1.index('hoho')
- except ValueError:
- print('hoho cannot be found in'+str1)
从头查找和从尾查找 startswith, endswith
有时候, 我们希望做从头匹配或者匹配尾部. 这时候就要用到 startswith 函数和 endswith 函数. 例:
- print(str1.startswith('ha'))
- print(str1.endswith('hei'))
这两个返回值均为 True.
如果需要更复杂的匹配, 还是需要正则表达式. 与 Java 等语言不同, Python 中的正则表达式有专门的模块, 字符串的 API 不负责这个事情.
小结
判断字符串是不是在别一个串中能找到: in
判断是否左匹配: startswith
判断是否右匹配: endswith
数数能匹配多少次: count
不抛异常的求匹配位置: find,rfind
会抛异常的求匹配位置: index,rindex
详情请阅读原文 http://click.aliyun.com/m/48054/
来源: http://www.jianshu.com/p/d0f6a949acf9