我需要一些帮助。我已经制作了一个python脚本来删除基于正则表达式的行。我在我的Mac上运行它
#!/usr/bin/env python
import re
inputfile = open('1.txt','r')
outputfile = open('2.txt','w')
outputfile.write(re.sub(r'^\d{6}$',"",inputfile.read()))
inputfile.close()
outputfile.close()
inputfile包含以下行:
5420
3960
4830
164841
180007
164425
5603
4593
4701
6389
4898
12345678
6532
162912
165321
我的脚本应该替换164841,180007,164425,162912,165321和#34;"
但没有任何反应,当我在记事本++中测试正则表达式或在我的Mac上升级时,它会找到正确的数字
答案 0 :(得分:2)
您需要MULTILINE
标记才能匹配每行中的锚点^
和$
:
outputfile.write(re.sub( re.compile('^\d{6}$', re.MULTILINE), "", inputfile.read()));
答案 1 :(得分:0)
您不需要将文件内容存储到单个变量中。只需循环输入文件中的每一行,然后检查此^\d{6}$
模式。
import re
with open('/input/file','r') as f: # open the input file for reading.
with open('/output/file','w') as w: # open the output file for writing.
for line in f: # iterate through each line from the input file.
if not re.match(r'^\d{6}$', line): # If the line won't have exactly 6 digits
w.write(line) # Then write the corresponding line to the output file.