【发布时间】:2022-01-12 15:13:15
【问题描述】:
我有一个问题,通过以下 re.sub() 方法,我能够从 *.txt 文件中提取所有邮件地址。
emails = re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.[a-z]+", file)
现在,我想删除此 *.txt 中的所有标点符号,因为其中还有一些文本。
我删除了标点符号
output = re.sub(r'^\w\s', '', file)
但此功能还会从文本中的电子邮件地址中删除标点符号。我如何在这个 re.sub 中为邮件地址写一个例外?
谢谢。
【问题讨论】:
-
一种可能的方法是 1. reg 用哈希字符串替换所有邮件(哈希应该避免标点符号,以及存储哈希和邮件的字典) 2. reg 替换标点符号 3. 字符串替换邮件。
-
我想你想要
re.sub(r"([a-z0-9.\-+_]+@[a-z0-9.\-+_]+\.[a-z]+)|[^\w\s]", r"\1", file) -
Wiktor Stribiżew 谢谢!对,就是那样。但是这里的 r"\1" 是例外吗?或者这是如何工作的?