@Smeilz1
За любое развитие

Как преобразовать строку без пробелов в List?

Необходимо преобразовать строку "a44b3c222" в лист данных ['a', 44, 'b', 3, 'c', 222]
Перепробовал кучу способов. Пытался разбить строку на символы и потом использовать i.isalpha() и i.isdigit(), но ничего не выходит, когда подряд 2 цифры, их как-то надо превратить в одну.
Подскажите как это красиво делается?
P.S. Необходимо искать и маленькие и большие буквы.
  • Вопрос задан
  • 449 просмотров
Решения вопроса 2
crazyzubr
@crazyzubr
Python backend-developer
import re
s = 'a44b3c222'
result_list = re.findall(r'([a-z]+|\d+)', s, flags=re.I)
Ответ написан
adugin
@adugin Куратор тега Python
Через re, конечно, самый наглядный вариант. Можно проще:
import re
re.split('(\d+)', "a44b3c222")

Отфильтровать пустые значения и конвертировать в int:
[int(s) if s.isdigit() else s for s in filter(None, re.split('(\d+)', "a44b3c222"))]

Или так, что хуже по читаемости:
[[str, int][s.isdigit()](s) for s in filter(None, re.split('(\d+)', "a44b3c222"))]

Можно ещё поизвращаться:
from itertools import groupby
[int(''.join(v)) if k else ''.join(v) for k, v in groupby("a44b3c222", key=lambda s: s.isdigit())]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы