【问题标题】:Deleting Relative Lines with Regex使用正则表达式删除相对行
【发布时间】:2016-01-31 17:48:11
【问题描述】:

使用 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

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

【问题讨论】:

    标签: python regex python-2.7


    【解决方案1】:

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

    迭代您的实际文件对象也会更有效,而不是将其全部放入一个列表中:

    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)
    

    【讨论】:

      猜你喜欢
      • 2019-02-16
      • 1970-01-01
      • 2015-12-17
      • 2013-06-21
      • 1970-01-01
      • 2011-12-23
      • 2016-04-18
      • 1970-01-01
      • 2012-10-18
      相关资源
      最近更新 更多