解压字符串

Decompressing string

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

如果考虑一位或两位数字(不多)的字母出现次数, 您可以使用以下正则表达式查找字母 + 数字形式的对: 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