python的re库的一些用法和理解

python的re库的一些用法和理解

  • re.sub()
  • re.findall()
  • re.compile()
  • 切句

re.sub()

这个函数可以用来替换字符串中的制定字符

# coding: utf-8
import re
texts = "dawdada"
text1 = re.sub('a', "%", texts)
text2 = re.sub('d', "", text1)
print(text1)
print(text2)

运行结果
在这里插入图片描述
不仅如此,re.sub()还能够匹配到制定的模板之后,将中间的成分插入某个字符

# coding: utf-8
import re
para = "hell。!@%o"
para2 = "hell。!---@%o"
para = re.sub('([!。])([%@])', r"\1tttttt\2", para)  # 单字符断句符 \1为匹配到第一个模式
para2 = re.sub('([!。])([%@])', r"\1tttttt\2", para2)  # 单字符断句符 \1为匹配到第一个模式
print(para)
print(para2)

在这里\1代表左边匹配到!或者。时,\2代表右边匹配到%或者@时,当两个条件同时满足时,中间插入tttttt。
运行结果
在这里插入图片描述

re.findall()

寻找所有匹配的字符

# coding: utf-8
import re
para = "2021年7月7日2002年02月03日"
f = re.findall(r"([0-9]*)年([0-9]*)月([0-9]*)日", para)
print(f)

*代表字符重复n次或0次
[0-9]代表匹配数字0-9
[a-z]代表匹配字母a-z
结果
在这里插入图片描述

re.compile()

定义匹配模式

# coding: utf-8
import re
item = "attacefaef"
find = re.compile(r'a(.*)a')  # 定义匹配模式
result = re.findall(find, item)
print(result)

输出结果
(默认参数应该是找到最长的匹配结果吧)
在这里插入图片描述

切句

import re
def cut_sent(para):  # 切句子
    para = re.sub('([;;])', r"\1\n", para)
    para = re.sub('([。!?\?])([^”’])', r"\1\n\2", para)  # 单字符断句符
    para = re.sub('(\.{6})([^”’])', r"\1\n\2", para)  # 英文省略号
    para = re.sub('(\…{2})([^”’])', r"\1\n\2", para)  # 中文省略号
    para = re.sub('([。!?\?][”’])([^,。!?\?])', r'\1\n\2', para)
    # 如果双引号前有终止符,那么双引号才是句子的终点,把分句符\n放到双引号后
    para = para.rstrip()  # 段尾如果有多余的\n就去掉它
    return para.split("\n")  # 返回由换行符连接的文本

text = "1、新报名供方必须通过质量体系认证(鄂钢原有合格供方不受此条件限制); 2、资质齐全,三证有效; 3、能接受货到付款,承兑汇票和商票付款方式; 4、投标人必须具有良好的银行资信和商业信誉,能按期履行合同,且能提供快速的售后服务响应,3年内无重大质量事故和合同纠纷。"
text = cut_sent(text)
for t in text:
    print(t)

输出:
在这里插入图片描述

你可能感兴趣的:(数据分析,Python,python,开发语言,后端,正则表达式,re)