python - 将 PDF 转换为文本 : remove word breaks

标签 python pdf text file-conversion

对于我的博士项目,我正在做一些语料库准备,主要包括清理我的文本文件。我有 170 部荷兰小说的语料库,其中大部分是 epub 格式,我可以使用 Calibre 轻松将其转换为 txt 格式。

问题在于,有些小说是 PDF 格式,其中某些行末尾包含断字符。当我将这些 PDF 文件转换为 txt 时,断词仍然存在。例如:

De reden van alle beroering 是 niet moeilijk te aden。 Adri-aan bleef 甚至 staan​​ bij een gezelschap jongerejaars om te ho-ren welke uitkomst de commentie kreeg。玛尔·特韦尔·希吉·斯通德 te luisteren naar meningen over de eager kwestie Nieuw-Gui-nea, overviel hem de herinnering aan een zonovergoten mid- dag 于 1939 年 9 月在 dezelfde hal toen hij 开始,学生 Gene-eskunde 在 Polen besprak 结识了 jaargenoten het zojuist ontketende Duitse of fensief。

我想知道是否有一种快速的方法可以消除这些断词。没有任何在线工具可以做到这一点。我对 python 有点熟悉,所以涉及 python 的解决方案可能会受到欢迎。也许一个想法是使用正则表达式来删除 txt 文件中行末尾的所有“-”字符?

这是我尝试的,使用下面的评论:

import re

with open('pdf_test.txt','r+', encoding='utf-8') as f:
    text = f.read()
    for line in text:
       if line.endswith('-'):
          line = re.sub('-',' ',line)
          f.seek(0)
          f.write(line)
          f.truncate()

但是,这不起作用......

最佳答案

我不知道它是否有效,但你可以使用replace:

text.replace('- ','')

或使用正则表达式:

import re
with open('pdf_test.txt','r+') as f:
    text = f.read()
    text = re.sub('- ','',text)
    f.seek(0)
    f.write(text)
    f.truncate()

但这两种方式将替换它们找到的每个此类字符('-'),而不仅仅是在句子末尾。好处是我认为你在普通文本中找不到“-”。

更新

嗯,看到你的评论后,我猜文字看起来像这样:

De reden van alle beroering was niet moeilijk te raden. Adri-
aan bleef even staan bij een gezelschap jongerejaars om te ho-
ren welke uitkomst de discussie kreeg. Maar terwijl hij stond te luisteren naar 
meningen over de acute kwestie Nieuw-Gui-
nea, overviel hem de herinnering aan een zonovergoten mid-
dag begin september 1939 in dezelfde hal toen hij, student gene-
eskunde, met jaargenoten het zojuist ontketende Duitse of-
fensief in Polen besprak.

(我编码格式以便能够保持它的格式......)

在这种情况下,如果您只想将每行末尾的所有“-”替换为“”,您可以这样做:

import re
with open('pdf_test.txt','r+') as f:
    lines = f.readlines()
    f.seek(0)
    for line in lines:
        if line[-2]=='-':
            line = re.sub('-','',line)   
        f.write(line)

.endswith('-') 在这种情况下也不起作用,因为每行的最后一个字符是 \n,所以不会有对原始文本的实际更改 - 这就是为什么我使用 line[-2] 来检查“-”字符。

关于python - 将 PDF 转换为文本 : remove word breaks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40382485/

相关文章:

python - 最小化多变量函数 Python SciPy

python - 从 (n,) 到 (n,1) numpy 数组,反之亦然?

iphone - 获取多行 UILabel 最后一行的宽度

python - 重新排列文本 block ,使每个文本 block 都以完整的句子结尾

python - 如何在 Python 中为应用程序设置专用屏幕区域?

python - 使用 Parser 替换所有 IMG 元素的 SRC

java - 延迟加载 PDF

javascript - 如何创建和下载要从 AngularJS 中的表中的数据创建的 PDF 和 docx 格式的文件?

pdf - 如何使用 pandoc 将 Markdown 方程转换为 pdf

text - ElasticSearch查询问题