re.compile只需要两个参数,有没有办法让它需要更多?或者另一种方式?

时间:2016-09-23 17:41:24

标签: python screen-scraping enumerate

我可以在计算机上以txt文件格式访问电子邮件,现在我的目标是从中删除特定数据。我利用re.compileenumerate来解析通过电子邮件寻找匹配的单词(在我的例子中,像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)

1 个答案:

答案 0 :(得分:1)

您可以使用垂直条|在鱼类之间替换

  

A|B,其中A和B可以是任意RE,创建正则表达式   这将匹配A或B

pattern = re.compile(r"GOM Cod|Salmon|Tuna", re.IGNORECASE)