← Все вопросы
Как разбить строку сразу по нескольким разделителям (запятая, точка с запятой, пробел)?
14
Входные данные грязные: где-то слова разделены запятой, где-то точкой с запятой, где-то пробелом. Обычный split(',') не справляется. Как разбить по любому из этих символов за раз?
3 ответа
23
Используй re.split с символьным классом:
import re
s = 'a, b;c d'
parts = re.split(r'[;,\s]+', s)
print(parts) # ['a', 'b', 'c', 'd']
Квадратные скобки — это «любой из этих символов», а + схлопывает подряд идущие разделители, чтобы не получить пустые элементы.
Шамиль Ausc `\s` ещё и табы с переносами захватит, удобно · 20 месяцев назад
6
Если разделители — это слова или сложнее, можно через |: re.split(r'\s*(?:,|;|\sи\s)\s*', s). Но для одиночных символов проще класс [...].
3
re.split(r'[;,\s]+', s).
Ваш ответ
Войдите, чтобы ответить на вопрос.