Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 24, 2014 23:25:14

Stroncy
Зарегистрирован: 2014-11-20
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

"Раскодировать" текст, сжатый с помощью повторов.

Нужна программа, которая считывает из файла строку, соответствующую тексту, сжатому с помощью “кодирования” повторов, и расшифровывая её, получает исходный текст.
Пример: http://i63.fastpic.ru/big/2014/1125/6e/57418246b18c1e511d0a544d3d984c6e.jpg
Python 3

Отредактировано Stroncy (Ноя. 25, 2014 01:52:38)

Офлайн

#2 Ноя. 25, 2014 01:17:15

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

"Раскодировать" текст, сжатый с помощью повторов.

import re
s = "a3b4c2e10b1"
a = re.split("(\d*)", s)[:-1]
print ''.join([i[1]*int(i[0]) for i in zip(a[1::2], a[::2])])



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Ноя. 25, 2014 01:51:54

Stroncy
Зарегистрирован: 2014-11-20
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

"Раскодировать" текст, сжатый с помощью повторов.

terabayt, Нужно чтоб программа считывала строку из файла. А у вас из переменной.. И для питон 3

Офлайн

#4 Ноя. 25, 2014 02:00:00

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

"Раскодировать" текст, сжатый с помощью повторов.

если нужно только первую строку:

import re
with open("file.txt", 'r') as s:
    a = re.split("(\d*)", s.readline())[:-1]
    print(''.join([i[1]*int(i[0]) for i in zip(a[1::2], a[::2])]))
если нужно все:
import re
with open("file.txt", 'r') as f:
    for s in f.readlines():
        a = re.split("(\d*)", s)[:-1]
        print(''.join([i[1]*int(i[0]) for i in zip(a[1::2], a[::2])]))



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Ноя. 25, 2014 02:13:45

Stroncy
Зарегистрирован: 2014-11-20
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

"Раскодировать" текст, сжатый с помощью повторов.

terabayt, ГРОМАДНОЕ Спасибо!!! Код подошёл ))

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version