当my_file
中的句子以单词后跟数字开头,例如“ City1”,并且my_file
中还有另一个句子以“ City2”开头时,以下代码仅返回第一句话:
description = re.findall("\n"+i+"[\s\,\d\(].*\.\n", my_file) #i equals 'City'
if description:
for d in description:
d = d.replace('\n', ' ')
bufferlist.append(d)
bufferlist[:] = unique( bufferlist ) #unique is a function removing duplicates from a list while keeping its order
my_string = ' '.join(bufferlist)
del bufferlist[:]
else:
my_string = '0'
为什么不能同时在
my_string
中得到第一句话和第二句话?编辑
问题或部分原因是
del bufferlist[:]
。这阻止了每次迭代中所需的比赛堆积。循环后必须删除bufferlist
。 最佳答案
(?:^|(?<=\n))City[\s\,\d\(].*\.(?=\n|$)
尝试此操作。您正在消耗
\n
,可能无法将其留给他人匹配。参见演示。
https://regex101.com/r/VIXyar/1
关于python - Re.findall仅返回Python 2.7中的第一个匹配项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42396384/