CoderCastrov logo
CoderCastrov
Питон

Использование словарей в качестве регулярных выражений в Python

Использование словарей в качестве регулярных выражений в Python
просмотров
2 мин чтение
#Питон

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

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

Популярные сообщения обычно имеют лаконичное написание и грамматику, но ошибки и прозвища часто встречаются. Например, "Minnesota Vikings" может быть записано неправильно как "Vikigns" или сокращено до "Vikes". Это создает проблему при парсинге данных, когда вы пытаетесь сопоставить "Vikings", так как они могут быть пропущены, но это можно решить с помощью словаря регулярных выражений.

Пример кода:

В этом примере столбец 'team_entry' фрейма данных передается в функцию парсера. Каждая строка будет сканироваться на наличие команды NFL в словаре.

Объяснение:

  • nfl_teams_dict состоит из желаемых значений для ключей регулярного выражения.
  • Чтобы использовать словарь в качестве шаблона регулярного выражения, мы используем join() для преобразования ключей словаря в строку, разделенную оператором регулярного выражения |.
  • Затем мы компилируем нашу строковую шаблон с учетом регистра с помощью re.IGNORECASE.
  • В строке, переданной в функцию, ищется шаблон, состоящий из всех ключей словаря, dictkeys_pattern. Снова обратите внимание на re.IGNORECASE.
  • Если team_found возвращает True, мы перебираем регулярные выражения, которые являются ключами нашего словаря, и присваиваем совпадающее значение(я) списку team и возвращаем его.


Обсуждение и Заключительные заметки:

Небольшое повторение README: Эта функция лучше всего использовать с отдельным файлом, содержащим словарь для более модульного и аккуратного кода. Если я парсю объявления на eBay для брендов популярных обуви, то имея легко доступный словарь, легко обновлять его, когда находятся новые [неправильные] написания. Кроме того, в файле README вы найдете другую версию кода, если вы ожидаете только одно значение. Этот код будет возвращать строку, а не список.

Спасибо за чтение! Если вам это было полезно или у вас есть какие-либо отзывы, дайте мне знать через комментарии или просто поставьте лайк.