将PDF转换为文本:删除单词中的断行

2024-05-23 21:38:47 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我的博士项目,我正在做一些语料库准备,主要是清理我的文本文件。我有170本荷兰小说的语料库,其中大部分都是epub格式的,我可以很容易地用Calibre转换成txt格式。在

问题是有些小说是PDF格式的,其中一些行的末尾有分词。当我把这些PDF文件转换成txt文件时,分词仍然存在。例如:

德雷登·范阿勒·贝罗林是尼特·莫伊利克·特雷登。他甚至还说,他是一个很好的人。马尔·特维杰·斯托德 这是一个非常重要的问题- 达格于1939年9月在德泽尔夫德哈尔托恩希吉,学生吉恩·埃斯昆德在波伦贝斯普拉克遇到了芬西夫的贾格诺顿·赫特·佐朱伊斯特·昂特泰德·杜伊茨。在

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

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

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()

但是,这不起作用。。。在


Tags: 文件项目textretxtpdf格式line
2条回答

PDFMiner是您的一个选项,并且this is an example从PDF页面提取文本。在

出于您的目的,您必须将第176行改为

' '.join(text_content)

这将删除换行符。在

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

text.replace('- ','')

或使用regex

^{pr2}$

但这两种方法将取代他们找到的每一个这样的字符('-'),而不仅仅是在句子的末尾。好在我觉得你在普通文本中找不到“-”。在

更新

好吧,看了你的评论后,我想文字是这样的:

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]来检查'-'字符的原因。在

相关问题 更多 >