我有一个旧的 shell 脚本,其中包括 sed 命令,如下所示。源数据($Tmp) 是一个 HTML 表格。
sed '/<table border/,/table>/d' $Tmp > $Out
有人可以帮我将此命令转换为 Python 脚本吗?我真的不知道如何用正则表达式做到这一点。非常感谢..
这是一个简单的实现。
简而言之,它打开文件,逐行迭代并将每一行打印到输出。如果匹配"<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
该脚本将所有行从输入文件复制到输出文件,除非它找到包含 的行<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)
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)