Разделить строку регулярным выражением
Синтаксис:
import re
re.split(pattern, string, maxsplit=0, flags=0)
Параметры:
pattern
- строка, шаблон регулярного выражения,string
- строка для поиска, maxsplit=0
- число, максимальное количество делений строки,flags=0
- один или несколько флагов.
Возвращаемое значение:
Описание:
Функция
split()
модуля
re
делит строку по появлению шаблона регулярного выражения
pattern
и возвращает список получившихся подстрок. Если в шаблоне используются
захватывающие скобки, то текст всех групп в шаблоне также возвращается как часть результирующего списка. Если
maxsplit
отличен от нуля, происходит максимальное деление строки на
maxsplit
частей, а остаток строки возвращается как последний элемент списка.
Функция re.split()
неоценима для преобразования текстовых данных в структуры данных, которые могут быть легко прочитаны и изменены Python.
Например записи разделены одним или несколькими символами новой строки. Преобразуем
строку в
список, где каждая непустая строка имеет свою запись:
>>> text = """Ross McFluff: 834.345.1254 155 Elm Street
...
... Ronald Heathmore: 892.345.3428 436 Finley Avenue
... Frank Burger: 925.541.7625 662 South Dogwood Way
...
...
... Heather Albrecht: 548.326.4584 919 Park Place"""
>>> entries = re.split("\n+", text)
>>> entries
# ['Ross McFluff: 834.345.1254 155 Elm Street',
# 'Ronald Heathmore: 892.345.3428 436 Finley Avenue',
# 'Frank Burger: 925.541.7625 662 South Dogwood Way',
# 'Heather Albrecht: 548.326.4584 919 Park Place']
Примеры использования:
>>> re.split(r'\W+', 'Words, words, words.')
# ['Words', 'words', 'words', '']
>>> re.split(r'(\W+)', 'Words, words, words.')
# ['Words', ', ', 'words', ', ', 'words', '.', '']
>>> re.split(r'\W+', 'Words, words, words.', 1)
# ['Words', 'words, words.']
>>> re.split('[a-f]+', '0a3B9', flags=re.IGNORECASE)
# ['0', '3', '9']
Если в разделителе есть группы захвата и он совпадает в начале строки, результат будет начинаться с пустой строки. То же самое относится и к концу строки:
>>> re.split(r'(\W+)', '...words, words...')
# ['', '...', 'words', ', ', 'words', '...', '']
Таким образом, компоненты разделителя всегда находятся с одинаковыми относительными индексами в списке результатов.
Пустые совпадения для шаблона разбивают строку, только если они не соседствуют с предыдущим пустым совпадением.
>>> re.split(r'\b', 'Words, words, words.')
# ['', 'Words', ', ', 'words', ', ', 'words', '.']
>>> re.split(r'\W*', '...words...')
# ['', '', 'w', 'o', 'r', 'd', 's', '', '']
>>> re.split(r'(\W*)', '...words...')
# ['', '...', '', '', 'w', '', 'o', '', 'r', '', 'd', '', 's', '...', '', '', '']