Как разделить строку между всеми символами и int в Python

#python #string #string-parsing

#python #строка #синтаксический анализ строки

Вопрос:

Например, я хочу преобразовать «2pL11H10K» в [2, p, L, 11, H, 10, K]

Комментарии:

1. Вероятно, вам понадобится оператор if и регулярные выражения … Пробовали ли вы какой-либо код до сих пор, и если да, можете ли вы опубликовать его и полученные ошибки?

2. Я еще не пробовал никакого кода

3. Что делать, если две или более буквы соседние? Должны ли они быть отдельными или вместе в результате?

Ответ №1:

Используйте регулярное выражение. Пример

 your_string = "2pL11H10K"
items = re.findall(r'[A-Za-z]|d ', your_string)
print(items)
  

тогда вы получили

 ['2', 'p', 'L', '11', 'H', '10', 'K']
  

Ответ №2:

Необходимы регулярные выражения, и уже были даны некоторые качественные ответы, но вам также нужно будет преобразовать числа из str() в int() . Этого также можно достичь с помощью регулярных выражений, например, с [0-9] помощью для идентификации одной или нескольких цифр.

Ответ №3:

Вы можете реализовать логику для этого, loop проверив, является ли предыдущий элемент цифрой или символом, если вы не хотите импортировать какие-либо модули. Однако regex , вероятно, это будет самое элегантное решение.

 result = []
for e in string:
    if result:
        if result[-1].isdigit() and e.isdigit():
            result[-1] = result[-1]   e
        else:
            result.append(e)
    else:
        result.append(e)