如何将此sed命令转换为Python脚本?
问题描述:
我有一个老的shell脚本,其中包括sed命令如下。 源数据($ Tmp)是一个HTML表格。如何将此sed命令转换为Python脚本?
sed '/<table border/,/table>/d' $Tmp > $Out
有人可以帮我把这个命令转换成Python脚本吗? 我真的不知道如何用正则表达式来做到这一点。 非常感谢..
答
脚本copys从输入文件中的所有行到输出文件,除非它找到含有<table border
一条线,则删除所有行,直到找到/table>
并继续写所有进一步线。
因此,一种可能是:
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)
答
这里有一个简单的实现。
简而言之,它打开文件,逐行迭代并将每行打印到输出。如果它匹配"<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
答
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)
谢谢你......它的工作原理。 – user2020514 2013-09-11 10:09:58