0

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

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

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

4

3 回答 3

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        
于 2013-05-04T10:44:30.327 回答
0

该脚本将所有行从输入文件复制到输出文件,除非它找到包含 的行<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)
于 2013-05-04T10:28:27.173 回答
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)
于 2013-05-04T17:38:22.167 回答