我有一个文本如下的输入文件:
1,A:E29, A:H31, A:K32, A:K33, A:D34, A:H35,6,0
1,A:L1, A:K2, A:E3, A:A4, A:E5, A:H7,0
我想编写一个正则表达式来提取,这样写入我的out文件的输出将是:
A:E29, A:H31, A:K32, A:K33, A:D34, A:H35
A:L1, A:K2, A:E3, A:A4, A:E5, A:H7
我编写了一些代码,尝试在python文档后使用正则表达式执行此操作。由于某种原因,我得到以下输出:
(Empty line)
A:E29, A:L1,
我的代码如下:
import re
pattern = re.compile("\w:\w*\d\d*\W\s*")
f= open("masterfile.txt","a+")
for i, line in enumerate(open('inputfile.txt')):
for match in re.findall(pattern, line):
print(match)
f.write(match)
break
else:
f.write('\n')
为什么我的输出至少不行:
A:E29,
(Empty line)
A:L1,
谢谢您的帮助!
答案 0 :(得分:1)
您不需要使用break
或else:
。写下比赛后,只需致电f.write('\n')
。
在没有匹配项的情况下,您可以检查并写空白行。
import re
pattern = re.compile("\w:\w*\d+\W\s*")
with open("masterfile.txt","a") as f, open('inputfile.txt') as infile:
for i, line in enumerate(infile):
matches = re.findall(pattern, line)
if len(matches) > 0:
f.write("".join(matches))
else:
f.write("\n")
f.write('\n')