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