常用的字符串处理函数
1. re.S
对于re.findall(),第三个参数默认为空
返回值为一个列表
import re
data = re.findall(r'(.*?)',text,re.S)
'''
(.*?)-->'()'标记一个子表达式的开始和结束位置,
'.'表示除换行符以外的一个字符,
‘*’前面内容可以出现0次或多次,
‘?’前面的内容(子表达)可以出现0次或1次
'''
如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始。
而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,在整体中进行匹配(涉及到类似python’’’ ‘’'括起来的多行字符串时候特别注意)。
2. str.split() 和 str.rsplit()
返回值为一个列表
2.1 str.split()
原型: str.split(sep=None, maxsplit=-1)
第二个参数代表最大分割数。
maxsplit默认为-1:即不指定最大分割数目的值。
maxsplit=1的话 表示最多切1刀,最大分割数为2(根据从前往后找到的sep位置切1刀). 如果没有找到sep,则不切分。
2.2 str.rsplit()
原型:str.rsplit(sep=None, maxsplit=-1)
区别 : 它是从后往前找
>>> s = 'a,b,ced'
>>> s.split(',',1)#最多从前往后以‘,’切一刀
['a', 'b,ced']
>>> s.rsplit(',',1)#最多从后往前以‘,’切一刀
['a,b', 'ced']
>>> t = '1,2,3,4,5'
>>> t.split(',',2)
['1', '2', '3,4,5']
>>> t.split('6',2)#找不到不切分
['1,2,3,4,5']
3. str.strip(),str.lstrip()和str.rstrip()
括号中没有内容:相当于空格,即进行匹配 去除的空格
3.1 str.strip()
原型: str.strip([chars])
两端去除:
str两端匹配char,能匹配就删除,不能匹配就下一个char,如果下一个char也无法匹配当前字符就终止**(两端匹配不是同时的,可能是从左往右匹配一遍,再从右往左匹配一遍)**
>>> '1223aass321'.strip('123')
'aass'
>>> '1223aass321'.strip('12')
'3aass3'
>>> '1224aass321'.strip('123')
'4aass'
3.2 str.lstrip()
原型: str.lstrip([chars])
左端去除:
从str左向右匹配char,能匹配就删除,不能匹配就下一个char,如果下一个char也无法匹配当前字符就终止
>>> '122324'.lstrip('2')
'122324'
>>> '122324'.lstrip('12')
'324'
>>> '122324'.lstrip('13')
'22324'
左端去除
3.3 str.rstrip()
原型: str.rstrip([chars])
右端去除:
从str从右往左匹配char,能匹配就删除,不能匹配就下一个char,如果下一个char也无法匹配当前字符就终止
>>> ' 123 '.strip()
'123'
>>> ' 123 '.lstrip()
'123 '
>>> ' 123 '.rstrip()
' 123'
4. str.replace()
原型:str.replace(old, new[, count])
>>> s = ' 123\n'
>>> s
' 123\n'
>>> s.replace('\n','')
' 123'
>>> s
' 123\n'
5. str.join()
原型:str.join(sequence)
sequence :要连接的元素序列(元素类型必须为字符串类型)
通过str将sqeuence连接起来
>>> seq = ('2019','10','19')
>>> s = '-'
>>> s.join(seq)
'2019-10-19'
>>> s.join('23')
'2-3'
>>> '2'.join('abc')
'a2b2c'
>>>
6. str.translate()
原型:str.translate(table)
参数table为字符的字典表
>>> intab = '123456'
>>> outtab = 'abcdef' #intab与outtab需要等长,每个字符建立字典
>>> transtab = str.maketrans(intab,outtab) #建立字典
>>> s = '2019-10-19-21:03'
>>> s.translate(transtab)
'b0a9-a0-a9-ba:0c'
>>> transtab
{49: 97, 50: 98, 51: 99, 52: 100, 53: 101, 54: 102}
>>> type(transtab)
<class 'dict'>
>>>