使用 RLE 和 Python 编码和解码 3.7

Encoding and Decoding using RLE and Python 3.7

我在计算机科学课上接到了一项任务,即使用 RLE 对 ASCII 艺术进行编码和解码。对于 AAAAAABBBBCCCCCCCCDDDDDDDDDDD,它必须像“07A05B08C11D”一样输出。它必须在 numbers/amounts 之前显示 0,低于 10,但我找不到关于如何执行此操作的 tutorial/explanation - 他们没有解释 0。此外,它必须从未在 IDLE 中输入的文本文件中获取 ASCII 艺术。它还必须通过使用 0 的输入来反转此过程。

任何帮助都将非常有用。提前致谢。

您可以使用 itertools.groupby for the run-length encoding and an f-string 格式化单个数字:

from itertools import  groupby

s = "AAAAAABBBBBCCCCCCCCDDDDDDDDDDD"

result = ''.join(f'{sum(1 for _ in group):02}{k}' for k, group in groupby(s))

print(result)

输出

06A05B08C11D

这条语句sum(1 for _ in group)是统计每组元素的个数