字符串str 不可变对象,Python3,字符串为Unicode类型
>>> s5=r"hello \n world" #非转义的原始字符串,即不是换行了。
hello \n world
>>> name='sunday'; age=17
s9=f'{name},{age}' #3.6支持f前缀(插值)
连接
+加号
>>> print('a'+'b')
ab
join方法
sep.join(iterable)
- sep: 指定分隔符,将可迭代对你中字符使用分隔符拼接起来
- 可迭代对象必须是字符串
- 返回一个新的字符串
>>> a=''.join(['a','b'])
>>> print(a)
ab
字符查找
find
find(sub[,start[,end]]) -> int
- 在指定的区间(start,end),从左到右,查找子串sub
- 找到返回正索引,没找到返回-1
>>> s='www.baidu.com'
>>> print(s.find('bai'))
4
>>> print(s.find('bai',2))
4
>>> print(s.find('bai',2,6))
-1
>>> print(s.find('bai',200))
-1
rfind
rfind(sub[,start[,end]]) -> int
- 在指定的区间(start,end),从右到左,查找子串sub
- 找到返回正索引,没找到返回-1
index
index(sub[,start[,end]]) -> int
rindex(sub[,start[,end]]) -> int
跟find方法很像,但找不到会抛异常,推荐使用find方法
时间复杂度
find、index和count 都是O(n) len(string) O(1)
分割
split
split(sep=None, maxsplit=-1)-> list of strings
- 从左至右
- sep指定分割字符串,缺省的情况下空白字符串作为分隔符
- maxsplit 指定分割的次数,-1 表示遍历整个字符串
- 立即返回新列表 (原字符不可变)
>>> a='1,2,3,a,b,c'
>>> print(a.split())
['1,2,3,a,b,c']
>>> print(a.split(','))
['1', '2', '3', 'a', 'b', 'c']
rsplit
rsplit(sep=None, maxsplit=-1)-> list of strings
- 从右向左开始切,但是输出的字符串字符不会反
- sep 指定分割字符串,缺省的情况下空白字符串作为分隔符
- maxsplit 指定分割的次数,-1 表示遍历整个字符串
- 立即返回新列表(原字符不可变)
spltlines
spltlines([keepends]) -> list of strings
- 按照行来切分字符串
- keepends 指的是是否保留行分隔符
- 行分隔符包括\n、\r\n、 \r等
partition
partition(sep) -> (head, sep, tail)
partition
- 从左至右,遇到分隔符就把字符串分割成两部分,返回头、分隔符、尾 三元组(part1, sep, part2)
- 如果没有找到分隔符,就返回头、2个空元素的三元组
- sep分割字符串,必须指定
rpartition
rpartition(sep) -> (head, sep, tail)
- 从右至左,遇到分隔符就把字符串分割成两部分,返回头、分隔符、尾三部分的三元组
- 如果没有找到分隔符,就返回2个空元素和尾的三元组
移除
strip
strip([chars]) -> str
- 在字符串两端去除指定的字符集chars中的所有字符
- 如果chars没有指定, 去除两端的空白字符
lstrip
Istrip([chars])-> str
左开始
rstrip
rstrip([chars])-> str
从右开始
s='\t\r\na b c,d\ne\n\t'
print(s.strip('\t\n')
print(s.strip('\t\ne\r')
头尾匹配
startswitch
startswitch 以开头精确匹配
endswitch
endswitch 从结尾精确匹配