python - 我如何运行长度编码模式而不是字符?
问题描述
这是我当前的 RLE 代码
import re
def decode(string):
if string == '':
return ''
multiplier = 1
count = 0
rle_decoding = []
rle_encoding = []
rle_encoding = re.findall(r'[A-Za-z]|-?\d+\.\d+|\d+|[\w\s]', string)
for item in rle_encoding:
if item.isdigit():
multiplier = int(item)
elif item.isalpha() or item.isspace():
while count < multiplier:
rle_decoding.append('{0}'.format(item))
count += 1
multiplier = 1
count = 0
return(''.join(rle_decoding))
def encode(string):
if string == '':
return ''
i = 0
count = 0
letter = string[i]
rle = []
while i <= len(string) - 1:
while string[i] == letter:
i+= 1
count +=1
#catch the loop on last character so it doesn't got to top and access out of bounds
if i > len(string) - 1:
break
if count == 1:
rle.append('{0}'.format(letter))
else:
rle.append('{0}{1}'.format(count, letter))
if i > len(string) - 1: #ugly that I have to do it twice
break
letter = string[i]
count = 0
final = ''.join(rle)
return final
当我删除所有评论时,代码可能已经搞砸了,但当前的代码并不太重要。问题是,我在十六进制值上运行 RLE,这些值已全部转换为字母,因此 0-9 变为 gp。问题是有很多像'kjkjkjkjkjkjkjkjlmlmlmlmlmlmlmlm'这样的模式根本不压缩,因为它们不是单个字符。如果可能的话,我将如何运行我的程序以便它也编码模式?
解决方案
推荐阅读
- google-chrome - 使用 chrome 时,使用对象 URL pdf 文件不会从 aws s3 下载。我收到“失败 -Forbidden 错误。适用于 Firefox 和 Edge
- http - 使用邮递员在 D365 F&O 中调用自定义服务
- php - 将订单 ID 与用户 ID 链接并获取用户名 Laravel 7
- reactjs - 需要使用 react hooks 来显示基于按钮的组件
- azure - 访问 Azure SQL 数据库返回不支持的关键字“元数据”错误
- java - 不和谐 Java JDA | 从 SQLite 删除数据/从 SQLite 获取数据
- python - 如果我从寄存器 0x12 读取 6 个字节,BMA490l 将返回零
- c# - 使用应用服务并可以访问 Microsoft Dynamic 365 在线 CRM 的 Azure 功能
- speech-recognition - 已识别文本中不需要的插入
- ruby-on-rails - 将 json 文件数据保存到 Rails 数据库