首页 > 解决方案 > 在python中解压缩压缩数据的代码?

问题描述

我需要一些帮助来找到将解压缩一串压缩数据的代码。例如,如果我输入“4a2b”,程序将输出“aaaabb”

from itertools import groupby
s = code_to_uncompress=input('Please enter the code?')
#s = '4a2b'
ss = [''.join(list(g)) for k, g in groupby(s, key=lambda x: x.isdigit())]
s_ = []
for i in range(len(ss)):
    if i%2 != 0:
        s_ += int(ss[i-1])*ss[i]
s_ = ''.join(s_)
s_

我希望能够输入任何压缩数据字符串并将其解压缩。它应该基于变量 code_to_uncompress 的输入工作

标签: pythonpython-3.xcompression

解决方案


您可以使用以下代码来获得您所追求的结果:

import re
test_str = "4a2b"

def multiply_char(c, num):
    return c *num


def uncompress_str(s):
    digits_str = [s for s in re.findall("\d", s)]
    for dig in digits_str:
        indx = s.find(dig)
        sub_str_replace = multiply_char(s[indx+1], int(dig))
        pat = s[indx:indx+2]
        s = s.replace(pat, sub_str_replace,1)
    return s

的输出test_str = "4a2b"是:

print(uncompress_str(test_str))
aaaabb

用户输入字符串的输出是:

test_str = input("Enter String: ")
print(uncompress_str(test_str))
Enter String: 5d4c7i8q
dddddcccciiiiiiiqqqqqqqq

我更喜欢总是与函数分开,但你可以在没有函数的情况下做它并作为循环的一部分

在 Windows 和 ubuntu 上添加了对用户输入的检查

Ubuntu

davidsr@complex1:/data2/davidsr$ python3 test.py 
Enter String: 4a3b5g6y
aaaabbbgggggyyyyyy

窗户

C:\Users\davidsr\PycharmProjects\test_matan>py test.py
Enter String: 4a3b
aaaabbb

推荐阅读