我正在尝试提取文本文件中两个关键字之间的所有文本。关键字在文件中出现多次,因此我将有多个好文本块。
input.txt文件是:
bad bad keyword1 GOOD DATA keyword2 bad
bad bad bad keyword1 MORE
GOOD DATA keyword2 bad bad
这不起作用:
import re
f = open('input.txt', 'r')
trim = re.findall('keyword1(.+?)keyword2', f.read())
print trim
它返回一个空列表:
[]
答案 0 :(得分:3)
如果你想获取所有数据,你应该使用re.DOTALL标志:
trim = re.findall('keyword1(.+?)keyword2', f.read(), re.DOTALL)
通常点字符表示获取所有字符但是\ n。使用DOTALL属性,引擎也匹配\ n作为点字符。
输出:
[' GOOD DATA ', ' MORE \nGOOD DATA ']
答案 1 :(得分:0)
$(inherited)