首页 > 解决方案 > 解压字符串

问题描述

我收到的字符串形式a3b4x2需要解压才能得到aaabbbbxx。如果数字是固定的,比如这个例子,很容易解压。但是,输入可以以a1192x12需要解压以获取aaaaaaaaaaa99xxxxxxxxxxxx的形式或31142以获取的形式出现3333333333344。最有效的方法是什么?

标签: pythonpython-2.7decodingrun-length-encoding

解决方案


如果你考虑一个字母在一个或两个数字中出现的次数(不是更多),你可以使用下面的正则表达式来查找lettre + number形式的对: r"(\w)(\d{1,2})".

这是一个可能的解决方案:

import re

samples = ["a3b4x2", "a1192x12", "31142"]

for sample in samples:
    result = ""
    for couple in re.findall(r"(\w)(\d{1,2})", sample):
        letter, number = couple
        number = int(number)
        result += letter * number
    print(result)

你得到:

aaabbbbxx
aaaaaaaaaaa99xxxxxxxxxxxx
3333333333344

推荐阅读