首页 > 解决方案 > 符号的运行长度编码

问题描述

我正在尝试使用 python 编写运行长度编码代码。如果消息由长序列符号组成。我打算将其编码为符号列表及其出现的次数。这是我的代码

alphabets = ['a','b','c','d','e','f','g','h','i','j','k',
             'l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
char_count = 0
translate = ''

words = input('Enter your word:  ')

for char in words:
    if char in alphabets:
        char_count += 1
        translate += char + str(char_count)

print(translate)

当我运行我的程序时,这就是我得到的。

Enter your word:  abbbbaaabbaaa
a1b2b3b4b5a6a7a8b9b10a11a12a13

输出实际上是应该的。

a1b4a3b2a3

有没有办法来解决这个问题?

标签: python

解决方案


您可以简单地使用正则表达式来解决问题:

import re
translate = re.sub(r"((.)\2*)", lambda x: x.group(2) + str(len(x.group(1))), words)

此正则表达式在字符串中查找所有相似的连续符号组,words并用其长度编码替换它们。


推荐阅读