Я пишу контент для AWS, Kubernetes, Python, JavaScript и многое другое. Чтобы просмотреть весь последний контент, обязательно Посетите мой блог и подписаться на мою рассылку. Подпишись на меня в Твиттере .
Это день 14 #100daysOfpython Challenge
Этот пост будет использовать Регулярные выражения модуль от стандартной библиотеки до …
Предварительные условия
- Знакомство с Пипенв . Смотрите Здесь за мой пост на Pipenv.
- Знакомство с Jupyterlab Анкет Смотрите Здесь Для моего поста на Jupyterlab.
- Знакомство с Обычные выражения
Начиная
Давайте создадим Hello-Python-Regex
каталог и установить подушку.
# Make the `hello-python-regex` directory $ mkdir hello-python-regex $ cd hello-python-regex # Create a folder to place your icons $ mkdir icons # Init the virtual environment $ pipenv --three $ pipenv install --dev jupyterlab
На этом этапе мы можем запустить сервер ноутбуков.
# Startup the notebook server $ pipenv run jupyter-lab # ... Server is now running on http://localhost:8888/lab
Сервер теперь будет запущен и работает.
Создание ноутбука
Однажды на http://localhost: 8888/lab , выберите, чтобы создать новую ноутбук Python 3 из запуска.
Убедитесь, что этот ноутбук сохранен в Hello-Python-Regex/Docs/regex.ipynb
Анкет
Мы рассмотрим следующее в каждой ячейке блокнота:
- Импорт модуля регуляции.
- Основное использование модуля коррекса.
- Замена строки с помощью модуля Regex.
Импорт модуля
Это импортирует Модуль режима из стандартной библиотеки.
import re m = re.search("Hello, (.+)", "Hello, world!") m.group(1) # 'world!'
Основное использование модуля
Есть ряд полезных методов модуля, которые мы можем использовать, которые мы продемонстрируем:
- Поиск струн.
- Соответствующие струны.
- Использование без компиляции.
- Разделение строки на список.
- Замена матчей.
Поиск струн
Сканируйте строку в поисках первого местоположения, где это регулярное выражение создает совпадение, и возвращает соответствующий объект совпадения. Вернуть нет, если никакая позиция в строке соответствует шаблону; Обратите внимание, что это отличается от поиска совпадения нулевой длины в какой-то момент в строке.
import re pattern = re.compile("ello, (.+)") m = pattern.search("Hello, world!") m.group(1) print(m) #print(m.group(1)) # world! n = pattern.search("Hello, world!", 0) print(n) # print(n.group(1)) # world!
Соответствующие струны
Если ноль или более символов в начале строки соответствует этому регулярному выражению, верните соответствующий объект совпадения. Вернуть нет, если строка не соответствует шаблону; Обратите внимание, что это отличается от матча нулевой длины.
pattern = re.compile("ello, (.+)") m = pattern.match("Hello, world!") # No match as "e" is the 2nd character the "Hello, world!". print(m) # None pattern = re.compile("Hello, (.+)") # Does match n = pattern.match("Hello, world!") print(n) #
Использование без компиляции
Когда вы используете re.match
и re.search
В качестве статического метода вы можете передать корпорацию в качестве первого аргумента:
m = re.match("Hello, (.+)", "Hello, world!") print(m) #n = re.match("Hello, (.+)", "Hello, world!") print(n) #
Разделение строки на список
m = re.split(",", "Hello, world!") print(m) # ['Hello', ' world!'] n = re.split("\s", "Hello beautiful world!") print(n) # ['Hello', 'beautiful', 'world!']
Замена матчей
Мы можем использовать Поиск
и sub
Методы замены совпадений.
# Simple example target = "Photo credit by [@thomas](https://site.com/@thomas)" m = re.search(r"Photo credit by \[@(.+)\]\(https://site.com/@(.+)\)", target) res = re.sub(m.group(1), "dennis", target) print(res) # Photo credit by [@dennis](https://site.com/@dennis) # By iterating for multiple matches target = "Photo credit by [@thomas](https://site.com/@user)" m = re.search(r"Photo credit by \[@(.+)\]\(https://site.com/@(.+)\)", target) res = target for idx, val in enumerate(m.groups()): res = re.sub(val, "dennis", res) print(res) # Photo credit by [@dennis](https://site.com/@dennis)
Для более конкретной замены (особенно в большом наборе текста) мы можем быть более явными со строкой для замены:
target = """ Other words thomas and user we don't want to replace. Photo credit by [@thomas](https://site.com/@user) """ new_name = "dennis" pattern = re.compile(r"Photo credit by \[@(.+)\]\(https://site.com/@(.+)\)") res = pattern.sub(f"Photo credit by [@{new_name}](https://site.com/@{new_name})", target) # Other words thomas and user we don't want to replace. # Photo credit by [@dennis](https://site.com/@dennis)
Резюме
Сегодняшний пост продемонстрировал, как использовать Re
Модуль из стандартной библиотеки для поиска, сопоставления, разделения и замены текста в струнах Python.
Это может быть невероятно полезно при работе с текстовыми файлами.
Ресурсы и дальнейшее чтение
- ABCS Pipenv
- Привет, jupyterlab
- Пипенв
- Регулярные выражения в Python
- Информация о регулярных выражениях
- Regex 101 – Веб -сайт для тестирования выражений Regex
Кредит фото: pawel_czerwinski
Первоначально опубликовано на моем блог . Чтобы увидеть новые сообщения без промедления, прочитайте сообщения там и подпишитесь на мою рассылку.
Оригинал: “https://dev.to/okeeffed/working-with-regex-expressions-in-python-48m0”