re.split(pattern, string)
- 就是用正则表达式进行分割
- 我们正常分割字符串,也是用split(),传入分割的参数即可
- 但分割参数都是固定的,比如空格,或者- ,或者逗号等
- 而re.split(pattern, string)完全可以传入正则表达式来分割
- 比如\W+表示所有的非字母数字下划线的字符串作为分隔符,最后留下来的就是字母数字下划线分割后的列表。
- 如果pattern加上括号,就可以把分隔符也加入到列表中。
import re
print(re.split('\W+', 'runoob, runoob, runoob.'))
print(re.split('(\W+)', ' runoob, runoob, runoob.') )
[‘runoob’, ‘runoob’, ‘runoob’, ‘’]
[’’, ’ ', ‘runoob’, ', ', ‘runoob’, ', ', ‘runoob’, ‘.’, ‘’]
re.sub(pattern, replace, string)
- 查找然后替换
- 而且是从string中找到,所有被匹配上的字符串,替换成replace中的内容
- 最后返回替换后的字符串string,是完整的字符串,而不仅仅是匹配到或者替换后的那部分字符串
例子:更换文件路径名称
./data/test.lis 包含以下路径内容
E:\transcripts\regression\dwgout_chamfer.tf
E:\transcripts\regression\idw_isod.tf
import re
with open("./data/test.lis", "r") as f:
content = f.read()
change_content = re.sub(r"q;", "D:\iMark", content)
print(change_content)
输出如下:
D:\iMark\transcripts\regression\dwgout_chamfer.tf
D:\iMark\transcripts\regression\idw_isod.tf
例子2:
有时我们读取的一些数字中,是包含逗号的,比如有些财报中的数字就是这样的,就可以用re.sub()来替换掉,并转换成浮点数类型。
test_data = "146,306,235,168.92"
new_data = re.sub(",", "", test_data)
print(float(new_data))
146306235168.92
re.findall(pattern, string, flags)
- 匹配所有
- 返回所有被匹配到的字符串内容,返回的是一个列表
re.finditer(pattern, string, flags)
- 匹配所有
- 返回被匹配到的字符串内容
- 返回的是一个迭代器