首页 > 解决方案 > 从列表中将 RLE 转换为 Python 中的字符串

问题描述

我已经从另一个问题中改编了一段代码,该问题将字符串转换为 Python 中的 RLE。我正在寻找一种使用相同概念但相反的解决方案,即输入一些 RLE 并获取完整的字符串。我已经包含了我在下面使用的原始代码。

提前致谢(更新以包括贡献的代码和输出截图)

text=input("Please enter the string to encode")
encoded=[]
index=0
amount=1
while index<=(len(text)-1):  
  if index==(len(text)-1) or text[index]!=text[(index+1)]:
    encoded.append((text[index],amount))        
    amount=1
  else:
    amount=amount+1            
  index=index+1   
print(encoded)

from itertools import groupby

def rle(text):
    return [(i, len(list(g))) for i, group in groupby(text)]

def from_rle(s):
    return ''.join((i*j for i, j in s))

print(text)


[https://i.stack.imgur.com/bLevj.jpg][1]

标签: pythonrun-length-encoding

解决方案


尝试使用 groupby

from itertools import groupby

def rle(text):
    return [(i, len(list(g))) for i, group in groupby(text)]

def from_rle(s):
    return ''.join((i*j for i, j in s))

推荐阅读