python - 符号的运行长度编码
问题描述
我正在尝试使用 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
有没有办法来解决这个问题?
解决方案
您可以简单地使用正则表达式来解决问题:
import re
translate = re.sub(r"((.)\2*)", lambda x: x.group(2) + str(len(x.group(1))), words)
此正则表达式在字符串中查找所有相似的连续符号组,words
并用其长度编码替换它们。
推荐阅读
- asp.net-core - 在 .NET Core 中为不同的客户端设计 REST API 域模型
- python - 在 python 中编写重复代码的更简洁的方法?
- javascript - 数组中的配对值
- reactjs - 在 Create React App 中使用 React Router 排除生产路线
- asp.net-core - 映射两个对象(带列表)的问题
- javascript - 如何在不重复代码的情况下达到效果?
- iptables - Proxmox-VE 6 / PFSense,iptables 的问题
- spring - 无法在 Hazelcast 中存储春季会议
- r - 请问,这个错误在 R Studio 中是什么意思?
- javascript - ReactPlayer 想要设置播放但收到警告