我正在尝试以不同的方式对特殊/特定的二进制数据进行游程长度编码。
例如我的数据就像
“010010010010001000100010001001010101010100100101000010000100000010000000010000001”
它应该将“从 0 开始并以 1 结束”计为一个单词/模式,例如“01”、“001”、“0001”(依此类推)
将算作一个单词/模式,因此如果它找到多个单词/模式,则会增加“1”的数量
例如,如果找到“01”2次,它将写入“011”,如果找到3次,则应返回“0111”
如果找到“001”2次,它将写入“0011”,如果找到3次,则应返回“00111”
如果找到“0001”2次,它将写入“00011”,如果找到3次,则应返回“000111”
但如果找到一次应返回原始值,例如“01”1次“01”,“001”1次“001”等
所以操作结束时我的数据将是“0100111000111100101111100110100001100000010000000010000001”
有人可以帮助我完成这项任务吗,因为我刚刚开始学习 python/编程
尝试:
import re
s = "010010010010001000100010001001010101010100100101000010000100000010000000010000001"
out = re.sub(
r"(0+1)(\1*)",
lambda g: g.groups()[0] + "1" * (len(g.groups()[1]) // len(g.groups()[0])),
s,
)
print(out)
打印:
0100111000111100101111100110100001100000010000000010000001