使用 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)
是统计每组元素的个数
我在计算机科学课上接到了一项任务,即使用 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)
是统计每组元素的个数