объединить слова в текстовом файле - PullRequest
0 голосов
/ 28 февраля 2019

Я экспортировал файл PDF в формате .txt и заметил, что многие слова были разбиты на две части из-за разрывов строк.Итак, в этой программе я хочу объединить слова, которые разделены в тексте, сохраняя правильные слова в предложении.В конце я хочу получить окончательный файл .txt (или, по крайней мере, список токенов) со всеми правильно написанными словами.Может кто-нибудь мне помочь?

мой текущий текст такой:

Мне нужна ваша помощь, потому что я не очень хороший программист.

результат мне нужен:

Мне нужна ваша помощь, потому что я не хороший программист.

from collections import defaultdict
import re
import string
import enchant

document_text=open('test-list.txt','r')
text_string=document_text.read().lower()
lst=[]
errors=[]

dic=enchant.Dict('en_UK')
d=defaultdict(int)
match_pattern = re.findall(r'\b[a-zA-Z0-9_]{1,15}\b', text_string)

for w in match_pattern:
lst.append(w)

for i in lst:
    if  dic.check(i) is True:
        continue
    else:
        a=list(map(''.join, zip(*([iter(lst)]*2))))
    if dic.check(a) is True:
        continue
    else:
        errors.append(a)
print (lst)

1 Ответ

0 голосов
/ 04 апреля 2019

У вас есть большая проблема - как ваша программа узнает, что:

be
cause

... следует рассматривать как одно слово?

Если вы действительно хотите, вы можете заменитьсимволы новой строки с пустыми пробелами:

import re

document_text = """
i need your help be
cause i am not a good programmer
""".lower().replace("\n", '')

print([w for w in re.findall(r'\b[a-zA-Z0-9_]{1,15}\b', document_text)])

Это будет корректно проверять because, но не удастся в таких случаях, как:

Hello! My name is 
Foo.

... потому что isFoo не слово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...