我正在尝试从一个文件中提取一些部分。原文是这样的:
part1
i like it
part2
no, i do not need it
part3
yes, 10 minutes;
但是,有些文件包含part3,有些文件包含donot; 现在我的任务是使用python从part1提取到part3(如果存在)。这就是我得到的:
> for index in range(1, 4):
> reg_str = r"part"+str(index)+"(?P<part"+str(index)+">[\s\S]*)"+r"(?:part"+str(index+1)+"$|$)"
> m = re.search(reg_str, total)
但是,我总是得到一个混合物,例如,part1的结果证明是文件中的每个部分。有什么想法吗?
答案 0 :(得分:2)
我会使用findall:
In [27]: pattern = re.compile('part[1-3]\n(.*)')
In [28]: pattern.findall(s)
Out[28]: ['i like it', 'no, i do not need it', 'yes, 10 minutes;']
答案 1 :(得分:1)
为什么不在part
处split
字符串?
>>> re.split("part[123]", str)
['', '\ni like it\n', '\nno, i do not need it\n', '\nyes, 10 minutes;']
>>> [ part for part in re.split("part[123]", str) if part ]
['\ni like it\n', '\nno, i do not need it\n', '\nyes, 10 minutes;']