【发布时间】:2019-10-09 17:16:43
【问题描述】:
我正在删除文本文件中的特定字符串和空行,这是我之前的问题的后续内容...我参考了我们的 SO 专家的一些示例和解决方案...通过删除字符串效果很好,但是不是空行。为了便于理解,我在这里强调了这个问题。
文本文件的某些部分包含 stringA、stringB 和 stringC 行以及它下面的空行,只删除它下面的单行。
line0
line1 stringAxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line2 stringBxxxxxxxxxxxxxxxxxxxxxxx
line3 stringCxxxxxxxxxxxxxxxxxxx
line4
line5
line6 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line7 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line8
line9 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line10 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line11 stringBxxxxxxxxxxxxxxxxxxxxxxx
line12 stringCxxxxxxxxxxxxxxxxxxx
line13
line14
line15 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line16 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line17
line18 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line19 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line20
line21 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line22 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line23
line24 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line25 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line26 stringBxxxxxxxxxxxxxxxxxxxxxxx
line27 stringCxxxxxxxxxxxxxxxxxxx
line28
line29
line30 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line31 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line32
在这种情况下,删除任何包含 stringA、stringB、stringC 和其后一行的行。例如上面,删除第 1,2,3,4 行删除第 11,12,13 行删除第 26,27,28 行
我尝试过使用 strip() 但它删除了所有空行。这是我使用的脚本,它确实删除了所有包含 stringA、stringB 和 stringC 的行。
filename = 'raw.txt'
with open(filename, 'r') as fin:
lines = fin.readlines()
with open('clean.txt', 'w') as fout:
for line in lines:
if not re.match(r"\s+(stringA|stringB|stringC)", line):
fout.write(line)
预期输出
line0
line5
line6 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line7 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line8
line9 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line10 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line14
line15 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line16 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line17
line18 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line19 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line20
line21 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line22 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line23
line24 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line25 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line29
line30 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line31 textxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
line32
感谢您的帮助和善意的帮助。谢谢。
【问题讨论】: