Форум сайта python.su
Выкладываю не двухметровый, но один из наиболее сложных.
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)
Офлайн