Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2009 06:02:42

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

Очистка текста

Выкладываю не двухметровый, но один из наиболее сложных.

1 012 413 (28).txt

Там есть такие места, где вместо латинских букв, стоят русские эквиваленты (сканированный текст), навроде “НЗОН” и подобных.
По сути, нужно привести текст в наиболее читаемый вид, хотя бы избавившись от лишних знаков препинания.
Собственно, я почти доделал скрипт, но там в одном месте есть несколько сложная проблемка:

# -*- coding: cp1251 -*-
import re

text = file("./1 012 413 (28).txt", 'r').read()

def rpl(dd):
dd = re.sub("[^А-я.,\- ]", "", dd)
while '..' in dd or ' ' in dd or len(re.findall('(?<![А-я])[,\.][\s]{2,}', dd)) > 0 or len(re.findall('(?<![А-я]) - (?![А-я])', dd)) > 0 or len(re.findall('[А-я]\.([^А-я]+[ ]+)[А-я]', dd)):
dd = str.replace(dd, '..', '.')
dd = str.replace(dd, ' ', ' ')
#while len(re.findall('(?<![А-я])[,\.][\s]{2,}', dd)) > 0:
dd = re.sub('(?<![А-я])[,\.][\s]{2,}', '', dd)
#while len(re.findall('(?<![А-я] )-(?= [А-я])', dd)) > 0:
dd = re.sub('(?<![А-я]) - (?![А-я])', '', dd)
dd = re.sub('[А-я]\.([^А-я]+[ ]+)[А-я]', ' ', dd)
return dd

y = rpl(text)

file("rtxt.txt", 'w').write(y)
Последнее условие цикла постоянно выполняется, ибо там я заменяю всякие какахи на пробел. Пока сижу, думаю, как бы так хитро это провернуть, оставаясь в одном этом цикле..



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version