Сообщить об ошибке.

Функция split() модуля re в Python

Разделить строку регулярным выражением

Синтаксис:

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', '...', '', '', '']