Здравствуйте, нужна помощь чтоб закончить скрипт сжатия, алгоритм такой, текст разбивается на слова, составляется список повторений, присваивается уникальное значение, составляется словарь, он сохраняется в файле с “сжатым” текстом. В python я не шибко силен, пока есть вот это, нужен хотя бы намек как реализовать попроще извлечение словаря и обратную замену
import re
def split_by_words(s):
return re.split(r'(\w+)', s)
def count_words(line_iterator):
words = {}
for line in line_iterator:
for i, w in enumerate(split_by_words(line)):
if i % 2 == 1 and len(w) > 2:
lw = w.lower()
words[lw] = words.get(lw, 0) + 1
return words
def replace_words(s, replace_dict):
return ''.join(replace_dict.get(w.lower(), w.lower())
for w in split_by_words(s))
def freq_pop_chart(words):
return {w : i for i, w in enumerate(sorted(words,
key = words.__getitem__, reverse = True))}
def process_file(fin, fout):
with open(fin, 'r') as f:
words = count_words(f)
replace_dict = {k : str(v) for k, v in freq_pop_chart(words).items()}
with open(fin, 'r') as i:
with open(fout, 'w') as o:
print (replace_dict, file = o, end = '')
for line in i:
print(replace_words(line, replace_dict), file = o, end = '')
def _main():
fin = input('in file > ')
fout = input('out file > ')
process_file(fin, fout)
print('File processed.')
if __name__ == '__main__':
_main()