Распаковывающая струна - PullRequest
0 голосов
/ 12 апреля 2020

Я получаю строку в виде a3b4x2, которую необходимо распаковать, чтобы получить aaabbbbxx. Если цифры зафиксированы, как в этом примере, распаковать легко. Тем не менее, ввод может быть в виде a1192x12, который должен быть распакован, чтобы получить aaaaaaaaaaa99xxxxxxxxxxxx, или в виде 31142, чтобы получить 3333333333344. Какой самый эффективный способ сделать это?

1 Ответ

1 голос
/ 12 апреля 2020

Если вы считаете число вхождений буквы в одну или две цифры (не более), вы можете использовать следующее регулярное выражение для поиска пар вида 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
...