Рубрики
Без рубрики

Python Regex Split.

Я всегда удивлен, как регулярные выражения пережили семь десятилетий технологического нарушения. Они выглядят намного так же, как 70 лет назад. Это означает, что если вы осваиваете регулярные выражения, вы строите себе прочный и очень актуальный навык на сегодняшнем рынке. Вы сможете написать в одной строке кода, что требует других … Python Regex Split Подробнее »

Автор оригинала: Chris.

Я всегда удивлен как обычные выражения пережил семь десятилетий технологического разрушения. Они выглядят намного так же, как 70 лет назад. Это означает, что если ты Мастер регулярных выражений , вы строим себя длительный и очень актуальный навык на сегодняшнем рынке. Вы сможете написать в Одной линейки кода Что делает других десятков!

Эта статья все о Re.Split (шаблон, строка) Метод Python Re библиотека Отказ

Re.Split (шаблон, строка) Метод соответствует всем вхождению шаблон В строка и делит строку вдоль матчей, что приводит к списку строк между матчи. Например, Re.Split («A», «BBABBBAB») Результаты в списке строк [«BB», «BBB», «B»] Отказ

Вы хотите освоить сверхдержаву Regeex? Проверьте мою новую книгу Самый умный способ изучать регулярные выражения в Python С инновационным 3-ступенчатым подходом для активного обучения: (1) Изучение книги главы, (2) Решите головоломки кода и (3) Смотреть воспроизведение главы видео.

Как работает re.Split () в Python?

То Re.Split (рисунок, строка ,,) Метод возвращает A. список строки Сопоставляя все вхождения шаблона в строке и разделить строку вдоль тех.

Вот минимальный пример:

>>> import re
>>> string = 'Learn Python with\t     Finxter!'
>>> re.split('\s+', string)
['Learn', 'Python', 'with', 'Finxter!']

Строка содержит четыре слова, разделенные персонажами Whitespace (в частности: пустое пространство '' и табличный символ '\ T' ). Вы используете регулярное выражение '\ S +' соответствовать всем вхождению положительного числа последующих пробелов. Соответствующие подстроки служат разграничителями. Результатом является строка, разделенная вдоль этих разделителей.

Но это не все! Давайте посмотрим на официальное определение метода разделения.

Спецификация

re.split(pattern, string, maxsplit=0, flags=0)

Способ имеет четыре аргумента – два из которых являются необязательными.

  • шаблон – Уровень регулярного выражения вы хотите использовать в качестве разделителя.
  • строка – Текст, который вы хотите расстаться в список строк.
  • maxsplit (Необязательный аргумент) – максимальное количество раздельных операций размера возвращенного списка). По умолчанию, maxsplit Аргумент 0, что означает, что он игнорируется.
  • Флаги (Дополнительный аргумент) – более продвинутый модификатор, который позволяет настроить поведение функции. По умолчанию модуль Regex не считает никаких флагов. Хотите знать Как использовать эти флаги? Проверьте эту подробную статью на блог Finxter.

Первые и второе аргументы требуются. Третий и четвертый аргументы являются необязательными. Вы узнаете о этих аргументах более подробно позже.

Возвращаемое значение: Метод разделения REGEX возвращает список подстроек, полученных с помощью Regex в качестве разделителя.

Regex разделен минимальный пример

Давайте изучим еще несколько примеров – от простых до сложных.

Самое простое использование состоит в том, что только два аргумента: разделитель Regex и строка для разделения.

>>> import re
>>> string = 'fgffffgfgPythonfgisfffawesomefgffg'
>>> re.split('[fg]+', string)
['', 'Python', 'is', 'awesome', '']

Вы используете произвольное количество 'f' или 'g' символы как разделители регулярного выражения. Как вы это делаете? Объединяя класс персонажа Regex [A] и одно или-другое регулярное выражение A + в следующее Regex: [FG] + Отказ Строки между между ними добавляются в список возврата.

Связанная статья: Python Regex SuperPower – Ultimate Guide

Как использовать аргумент MaxSplit?

Что, если вы не хотите разделить всю строку, но только ограниченное количество раз. Вот пример:

>>> string = 'a-bird-in-the-hand-is-worth-two-in-the-bush'
>>> re.split('-', string, maxsplit=5)
['a', 'bird', 'in', 'the', 'hand', 'is-worth-two-in-the-bush']
>>> re.split('-', string, maxsplit=2)
['a', 'bird', 'in-the-hand-is-worth-two-in-the-bush']

Мы используем простой разделитель Regex '-' Разделить строку в подстроки. В первом вызове метода мы устанавливаем maxsplit = 5 Для получения шести элементов списка. Во втором методе вызов, мы устанавливаем maxsplit = 3 Чтобы получить три элемента списка. Можете ли вы увидеть шаблон?

Вы также можете использовать позиционные аргументы для сохранения некоторых символов:

 >>> re.split('-', string, 2)
['a', 'bird', 'in-the-hand-is-worth-two-in-the-bush']

Но столько кодеров не знают о maxsplit Аргумент, вы, вероятно, должны использовать аргумент ключевых слов для читабельности.

Как использовать дополнительный аргумент флага?

Как вы видели в спецификации, Re.Split () Метод поставляется с необязательной четвертой «Флаг» Аргумент:

re.split(pattern, string, maxsplit=0, flags=0)

Какова цель аргумента флагов?

Флаги позволяют управлять регулярным механизмом выражения. Поскольку регулярные выражения настолько мощны, они являются полезным способом включения и отключения определенных функций (например, следует ли игнорировать капитализацию при сопоставлении вашего Regex).

Синтаксис Значение
решающее значение Ascii Если вы не используете этот флаг, специальные символы Regex Python W, W, B, B, D, D, S и S будут соответствовать символам Unicode. Если вы используете этот флаг, эти специальные символы будут соответствовать только символам ASCII – как указано имя.
решающее значение А. Так же, как ре. Ascii
re.debug. Если вы используете этот флаг, Python распечатает некоторую полезную информацию в оболочку, которая помогает отладить ваше регулярное выражение.
решающее значение INGLORECASE. Если вы используете этот флаг, двигатель Regex будет выполнять совпадение в случае сопоставления. Поэтому, если вы ищете [A-Z], он также будет соответствовать [A-Z].
решающее значение я Так же, как ре. INGLORECASE.
решающее значение Локаль Не используйте этот флаг – когда-либо. Он обесценился – идея состояла в том, чтобы выполнить сопоставление нечувствительности к регистру в зависимости от вашей текущей местности. Но это не надежно.
решающее значение Ливня Так же, как ре. Локаль
решающее значение Многолетний Этот флаг включает в следующую функцию: начало строки Regex ‘^’ совпадает в начале каждой строки (а не только в начале строки). То же самое относится и к концу строки Regex ‘$’, который сейчас соответствует также в конце каждой строки в многострочной строке.
решающее значение М` Так же, как ре. Многолетний
решающее значение Дозал Без использования этого флага точечное регулярное выражение. ‘ Соответствует всем персонажам, кроме нового символа «n». Переключите этот флаг, чтобы действительно сопоставить все символы, включая новенький символ.
решающее значение С Так же, как ре. Дозал
решающее значение ПОДРОБНЫЙ Чтобы улучшить читаемость сложных регулярных выражений, вы можете позволить комментариям и (многострочному) форматированию самого Regeex. Это возможно с этим флагом: все пробелы и строки, которые начинаются с символа «#», игнорируются в Regex.
решающее значение Икс Так же, как ре. ПОДРОБНЫЙ

Вот как бы вы использовали его в практическом примере:

>>> import re
>>> re.split('[xy]+', text, flags=re.I)
['the', 'russians', 'are', 'coming']

Хотя ваше регулярное выражение строчное, мы игнорируем капитализацию с помощью флага RE. Я короче для ре. INGLORECASE. Если бы мы этого не сделали, результат будет совсем другим:

>>> re.split('[xy]+', text)
['theXXXYYYrussiansXX', 'are', 'Y', 'coming']

Поскольку класс символов [XY] содержит только символы Lowerspace символов «x» и «y», их заглавные варианты появляются в возвращенном списке, а не используется в качестве разделителей.

В чем разница между Re.Split () и String.Split () методами в Python?

Метод Re.Split () гораздо мощнее. Re.Split (шаблон, строка) Способ может разделить строку вдоль всех вхождений сопоставленного шаблона. Шаблон может быть произвольно сложен. Это в отличие от string.split (разделитель) Способ, который также разбивает строку в подстроки вдоль разделителя. Однако разделитель должен быть нормальной строкой.

Пример, где более мощный Re.Split () Метод превосходит в разделении текста вдоль любых пробеловных символов:

import re


text = '''
    Ha! let me see her: out, alas! he's cold:
    Her blood is settled, and her joints are stiff;
    Life and these lips have long been separated:
    Death lies on her like an untimely Frost
    Upon the sweetest flower of all the field.
'''

print(re.split('\s+', text))
'''
['', 'Ha!', 'let', 'me', 'see', 'her:', 'out,', 'alas!',
"he's", 'cold:', 'Her', 'blood', 'is', 'settled,', 'and',
'her', 'joints', 'are', 'stiff;', 'Life', 'and', 'these',
'lips', 'have', 'long', 'been', 'separated:', 'Death',
'lies', 'on', 'her', 'like', 'an', 'untimely', 'Frost',
'Upon', 'the', 'sweetest', 'flower', 'of', 'all', 'the',
'field.', '']
'''

Re.Split () Метод делит строку вдоль любого положительного числа пробеловных символов. Вы не могли достичь такого результата с string.split (разделитель) Потому что разделитель должен быть строкой с постоянной размером.

Связанные методы Re

Есть пять важных методов регулярного выражения, которые вы должны освоить:

  • Re.findall (шаблон, строка) Метод возвращает список строковых совпадений. Читайте больше в Наше руководство в блоге Отказ
  • Re.Search (шаблон, строка) Метод возвращает объект совпадения первого матча. Читайте больше в Наше руководство в блоге Отказ
  • Re.match (шаблон, строка) Метод Возвращает объект совпадения, если установки Regeex в начале строки. Читайте больше в Наше руководство в блоге Отказ
  • Re.fullmatch (шаблон, строка) Метод возвращает объект совпадения, если Regeex соответствует всей строке. Читайте больше в Наше руководство в блоге Отказ
  • Re.compile (Pattern) Способ подготавливает шаблон регулярной экспрессии – и возвращает объект Regex, который вы можете использовать несколько раз в вашем коде. Читайте больше в Наше руководство в блоге Отказ
  • Re.Split (шаблон, строка) Метод возвращает список строк, сопоставив все вхождения шаблона в строке и разделить строку вдоль тех. Читайте больше в Наше руководство в блоге Отказ
  • Re.sub (шаблон, репрекс, строка ,,) Метод возвращает новую строку, в которой все вхождения шаблона в старой строке заменены на Реп Отказ Читайте больше в Наше руководство в блоге Отказ

Эти пять методов составляют 80% от того, что вам нужно знать, чтобы начать работу с функциональностью регулярных выражений Python.

Связанное видео.

Куда пойти отсюда?

Вы узнали о Re.Split (шаблон, строка) метод, который разделяет нить вдоль сопоставления шаблон вхождения и возвращает список подстроек.

Обучение Python сложно. Но если вы обманываете, это не так сильно, как должно быть:

Скачать 8 бесплатных читов Python сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.