我有一个文件多行文本,我想分析出两条独立线路。我想这样的线路:
# x_be
# x_ls
# l_rs
因此,这将是“#”到一个行的末尾。另外,我想这样的线路:
所以,在这种情况下,这将是“ - ID:”直到一行的末尾。我怎样才能做到这一点?我以为代码愿像下面的示例,但是,这并不符合所有东西。
with open('C:\\path_here\\final_result.txt','r') as f:
lines = f.read()
start = '^#'
end = '\n'
import re
results = re.findall(r'start\s+(.*?)\end',lines,flags=re.DOTALL)
prep_results = list(map(lambda x: x.split("\n"), results))
output = [start+','.join(i)+end for i in prep_results]
with open('C:\\path_here\\parsed.txt','w') as f:
for line in output:
f.write("%s\n" % line)
我想选择一个起点和终点,这样我就可以让这个充满活力,并挑选出在某些情况下多行。大部分时间虽然,我在寻找的开始和结束变量在同一行文字。
import re
with open("input.txt","r") as f:
data = f.read()
exclude = [" source"]
ex_reg = "(?!{})".format('|'.join(exclude))
start = ["#",'- id:']
start[1] += ex_reg
end = "\n"
reg = re.compile('\s*({})'.format('|'.join(start)),flags=re.S)
for i in data.split(end):
if re.match(reg,i):
print(i.strip())
看起来矫枉过正,但你可以添加尽可能多的排除的话,只要你愿意。但是,当你添加它们,它们之前介意的空间。