← Все вопросы

Как разбить строку сразу по нескольким разделителям (запятая, точка с запятой, пробел)?

Задан 21 месяц назад703 просмотров3 ответа
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).

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект