对于我的博士项目,我正在做一些语料库准备,主要包括清理我的文本文件。我有 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('- ','')
或与
regex
:
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]
来检查'-' 字符。
我有一个 PHP 代码可以做到这一点,我对 Python 不太了解,但我认为会是这样的:
import re
text = re.sub(r"(-|–)(\n+)", "", text)
但我认为某些 PDF 文件在转换为文本时会丢失“-”字符,在这种情况下我不知道如何解决这个问题。