如何逐行匹配文件与python中的正则表达式

时间:2016-02-24 03:26:08

标签: python regex

我在python中有一个文件,每行有一个单词,我需要返回一个与传入正则表达式匹配的每个单词的列表,其中包含函数load_words。例如:load_words(“words”,r“^ [AZ]。{2} $”)应该返回['A-1','AAA','AAE']和其他有意义的因为这3个都适合表达式以大写字母开头,然后有两个任何东西。这是我目前的职能:

def load_words(filename,regexp):
    f=open(filename)
    t=[]
    x=None
    for line in f:
        x=(re.match(regexp,line))
        if x!=None:
            t.append(x)
    return t

我尝试逐行读取文件,如果该行与表达式匹配,我将其添加到列表中。我不太确定我需要将正则表达式与srings匹配,所以我可能在所有可能性中使用了错误的函数因为我的输出看起来像地址而不是字符串。

2 个答案:

答案 0 :(得分:1)

您正在列表中收集Match objects,但需要从group获取匹配项。替换:

t.append(x)

使用:

t.append(x.group(0))

请注意,您无需检查x不是None,只需检查它是否为“真实”:

x = re.match(regexp, line)
if x:
    t.append(x.group(0))

答案 1 :(得分:0)

def load_words(filename,regexp):

f=open(filename)

data = f.read()

t = re.findall(regexp,data,re.MULTILINE)

return t