#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)