我有一个旧的shell脚本,其中包括sed命令,如下所示。 源数据($ Tmp)是一个HTML表。
sed '/<table border/,/table>/d' $Tmp > $Out
有人可以帮助我将此命令转换为Python脚本吗? 我真的无法弄清楚如何用正则表达式做到这一点。 非常感谢..
答案 0 :(得分:1)
这是一个简单的实现。
简单地说,它打开文件,逐行迭代并将每一行打印到输出。如果它与"<table border"
匹配,则删除标志设置为True,并且在匹配"table>"
之前,不会将以下行打印到输出。
import sys
f = open(sys.argv[1])
delete = False
for line in f:
if delete == False:
if "<table border" in line:
delete = True
if delete == False:
print line,
if delete == True:
if "table>" in line:
delete = False
答案 1 :(得分:0)
脚本将输入文件中的所有行复制到输出文件,除非它找到包含<table border
的行,然后删除所有行,直到找到/table>
并继续写入所有其他行。< / p>
所以一种可能性是:
with open('in') as inf, open('out', 'w') as outf:
while True:
line = inf.readline()
if '<table border' in line:
while True:
line = inf.readline()
if not line or '/table>' in line:
line = inf.readline()
break
if not line:
break
outf.write(line)
答案 2 :(得分:0)
import sys
with open(sys.argv[1]) as f:
for line in f:
if '<table border' in line:
for line in f:
if 'table>' in line:
break
else:
sys.stdout.write(line)