我可以在计算机上以txt文件格式访问电子邮件,现在我的目标是从中删除特定数据。我利用re.compile
和enumerate
来解析通过电子邮件寻找匹配的单词(在我的例子中,像GOM Cod这样的鱼类),然后打印它们。但是我需要解析100多封电子邮件,每封都有几种不同的鱼类......所以我的问题是:最好的方法是什么?我不能将所有17种不同的鱼类物种放入一个re.compile
函数中,所以我应该只有17个不同的相同代码块,而每个鱼类物种都有变化吗?这是最有效的方式吗?我的代码如下。
import os
import email
import re
path = 'Z:\\folderwithemail'
for filename in os.listdir(path):
file_path = os.path.join(path, filename)
if os.path.isfile(file_path):
with open(file_path, 'r') as f:
sector_result = []
pattern = re.compile("GOM Cod", re.IGNORECASE)
for linenum, line in enumerate(f):
if pattern.search(line) != None:
sector_result.append((linenum, line.rstrip('\n')))
for linenum, line in sector_result:
print ("Fish Species:", line)
答案 0 :(得分:1)
您可以使用垂直条|
在鱼类之间替换:
A|B
,其中A和B可以是任意RE,创建正则表达式 这将匹配A或B
pattern = re.compile(r"GOM Cod|Salmon|Tuna", re.IGNORECASE)