Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

Python, разделение строки по символам через метод re.split

#python #python_3x #строки #split


Необходимо разделить входящую строку по числам и буквам, например:

s = "k10Z18i13Q19u"
a = re.split("(\d*)", s)


На выходе получим:

['k', '10', 'Z', '18', 'i', '13', 'Q', '19', 'u']


Но так же получим ошибку:

FutureWarning: split() requires a non-empty pattern match.
  return _compile(pattern, flags).split(string, maxsplit)


Данный метод очень подходит для решения моей задачи, но не пойму, отчего ошибки.
Именно шаблон для разделения строки (\d*) взял из чужого решения, но не знаю как именно
он работает, не смог найти описания.
Можете подсказать, что делаю не так или каким методом лучше решить данную задачу?
    


Ответы

Ответ 1



Замените (\d*) на (\d+) Поясню что не так: (\d*) подразумевает ноль или более цифр. То есть пустым разделитель тоже может быть. Если это учитывать, то ваш результат мог быть и таким: ['', 'k', '10', 'Z', '18', 'i', '13', 'Q', '19', 'u', ''] Также если бы у вас были две буквы подряд, то между ними тоже могла бы "найтись" пустая строка. Текущая реализация этого метода не находит пустые подстроки, которые могут подходить под регулярное выражение. Однако в будущем планируется это реализовать, поэтому вы получаете FutureWarning. Вас предупреждают, что если вы ничего не измените, после обновления вас может ожидать сюрприз. См. также re.split

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

Отправить комментарий