python - 使用正则表达式删除相对行

标签 python regex python-2.7

使用 pdftotext 创建了一个文本文件,其中包含源 pdf 中的页脚。页脚妨碍了需要完成的其他解析。页脚的格式如下:

This is important text.

9
Title 2012 and 2013

\fCompany
Important text begins again.

Company 行是唯一不会在文件其他地方重复出现的行。它显示为 \x0cCompany\n。我想搜索这一行并根据 \x0cCompany\n 出现的位置删除它和前面的三行(页码、标题和空行)。这是我到目前为止所拥有的:

report = open('file.txt').readlines()
data = range(len(report))
name = []

for line_i in data:
    line = report[line_i]

    if re.match('.*\\x0cCompany', line ):
        name.append(report[line_i])

print name

这允许我创建一个列表,存储哪些行号出现了这种情况,但我不明白如何删除这些行以及前面的三行。看来我需要基于这个循环创建一些其他循环,但我无法使其工作。

最佳答案

不要迭代并获取要删除的行的索引,而是迭代您的行并仅附加您要保留的行。

迭代实际文件对象比将其全部放入一个列表中也会更有效:

keeplines = []

with open('file.txt') as b:
    for line in b:
        if re.match('.*\\x0cCompany', line):
            keeplines = keeplines[:-3] #shave off the preceding lines
        else:
            keeplines.append(line)


file = open('file.txt', 'w'):
    for line in keeplines:
        file.write(line)

关于python - 使用正则表达式删除相对行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35117142/

相关文章:

python-2.7 - 对二分查找有点困惑

python - Python 中的帕斯卡三角形问题

python - 选择其子/孙/..包含具有指定模式的元素的元素

python - Gensim LDA 一致性得分 Nan

python - 对 DataFrame 中的所有列使用 groupby()

python - 正则表达式: pandas.str.contains ('binary: [49] ' ) 返回 False 但事实上,它是 True

Python:为什么运算符 "is"和 "=="有时可以互换字符串?

python - 我如何最好地存储每天收集的网络爬网数据以查找更改

javascript - Firefox Add-on-SDK page-mod 匹配模式/通配符错误

c# - 合并大文件中的 CSV 行