Как можно умножить разные элементы списка (str и int)? - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь преобразовать строку типа «a3b4» в «aaabbbb». Как это сделать без дополнительных модулей? Пока мой код выглядит так:

s = 'a3b4'
n = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
a = []
b = []

for i in range(len(s)):
    if s[i] in n:
        a.append(s[i])
    if s[i] not in n:
        b.append(s[i])
for i in range(len(b)):
    print(b[i])

1 Ответ

0 голосов
/ 06 августа 2020

Это должно работать:

letters = list(s[::2])
nums = list(s[1::2])
res = ''.join([a*int(b) for a,b in zip(letters,nums)])

>>res
Out[1]: 'aaabbbb'

EDIT:

Если вы хотите сопоставить любой srting и любые цифры, вы должны использовать регулярное выражение:

letters = re.findall(r'[a-z]+',s)
nums = re.findall(r'\d+',s)
res = ''.join([a*int(b) for a,b in zip(letters,nums)])

для:

 s='a10b3'

вывод:

>>res
Out[2]: 'aaaaaaaaaabbb'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...