re.match中的Python变量

时间:2016-11-11 17:36:31

标签: python regex

我正在尝试编写一个接受键(以及其他内容)的函数,并在文件中的此键后面返回单词。下面的代码有效,但前提是密钥恰好是文件中的第一个短语。谁能指出我出错的地方?

def findmatch(key, split_by, tempsl, filename, temp):
    rx=r''+key+'(.*)'
    f = open(tempsl + filename, 'r', encoding='windows-1252')
    for eachline in f:
        string=re.match(rx, eachline)
        if string:
            return (string.group().split(' ')[split_by])
        else:
            return "didn't work"

1 个答案:

答案 0 :(得分:3)

您在第一次迭代后结束for循环,因为

if string:
    return (string.group().split(' ')[split_by])
else:
    return "didn't work"

总会打破循环。只有在第一行中有关键字时,它才会返回一些结果。所以我建议:

for eachline in f:
    string=re.match(rx, eachline)
    if string:
        return (string.group().split(' ')[split_by])
else: # else statemant is a part of for loop (moved to the left)
    return "didn't work" 

试试这个:

m = re.search('(?<=' + key + ')\w+', eachline)
m.group(0)