如何将此sed命令转换为Python脚本?

时间:2013-05-04 09:35:03

标签: python regex sed

我有一个旧的shell脚本,其中包括sed命令,如下所示。 源数据($ Tmp)是一个HTML表。

sed '/<table border/,/table>/d' $Tmp > $Out

有人可以帮助我将此命令转换为Python脚本吗? 我真的无法弄清楚如何用正则表达式做到这一点。 非常感谢..

3 个答案:

答案 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)