对于我的博士项目,我正在做一些语料库准备,主要包括清理我的文本文件。我有一本170本荷兰小说的语料库,其中大部分都是epub格式的,我可以使用Calibre轻松转换为txt格式。
问题是有些小说是PDF格式的,其中包括某些行末尾的单词分词。当我将这些PDF文件转换为txt时,单词中断仍然存在。例如:
De reden van alle beroering是niet moeilijk te raden。 Adri-aan bleef甚至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从1939年9月开始在dezelfde hal toen hij,学生gene-eskunde,遇到了jaargenoten het zojuist ontketende Duitse of-fensief in Polen besprak。
我想知道是否有一种快速的方法可以摆脱这些断字。没有在线工具可以解决问题。我对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()
然而,这不起作用......
答案 0 :(得分:1)
我不知道它是否有效但您可以使用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]
检查“ - ”字符。
答案 1 :(得分:0)