Найти - Пользователи
Полная версия: Замены в тексте из словаря
Начало » Python для новичков » Замены в тексте из словаря
1
Adastraz
Друзья, такая проблема
Прога делает замену b на a, которые записаны в csv-файле

import codecs, re

def load_dict(fname):
f = codecs.open(fname, 'r', 'utf-8-sig')
dictSwap = {}
for line in f:
old, new = line.strip().split(u';')
swap = old + u'(|ую?|е|ых?|ами?|ах?|ем|и|о(го|му|в|м)|ыми?|о(й|м))\\b'
if len(old) > 4:
dictSwap[swap] = new
f.close()
return dictSwap


def process_text(fname, dictionary):
fIn = codecs.open(fname, 'r', 'utf-8')
fOut = codecs.open('out.txt', 'w', 'utf-8')
for line in fIn:
for word in line.strip(u'.,()?![]-').split():
swapped = word
for swap in dictionary:
swapped = re.sub(swap, dictionary[swap] + u'\\1', swapped.lower(), flags = re.U)
if swapped != word:
fOut.write(swapped + ' ')
else:
fOut.write(word + ' ')
fOut.write(u'\r\n')


fIn.close()
fOut.close()
if __name__ == u'__main__':
dictionary = load_dict(u'kot.csv')
process_text(u'kit.txt', dictionary)

Но после входа:“ Я о завтраке не Мечтаю”
Она печатает с заменой, но:“ Я о ужине не мечтаю”
Как сохранить регистр?
Спасибо заранее
lorien
> Как сохранить регистр?

Разобраться как работает программа, понять, почему она меняет регистр, затем внести нужные исправления в код программы.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB