#python #regex
#python #регулярное выражение
Вопрос:
Я работаю над кодом регулярных выражений на python для поиска шаблона регулярных выражений в каждой строке файла и извлечения требуемых шаблонов Несколько строк файла выглядят так
The Liz Copeland
Понедельник, 1 апреля 2018 г.
Нет. песня stay () прослушанный комментарий
Я хочу извлечь заголовок и заголовок из файла — в каждом заголовке есть Лиз Коупленд в строке, а строка заканчивается 5 вкладками, и вывод должен отображаться, как показано ниже
The Liz Copeland
-Каждый заголовок имеет вкладку, за которой следуют заголовки столбцов, разделенные 5 вкладками, и вывод выглядит следующим образом
Нет. прослушанный комментарий stay song ()
Я написал функцию для извлечения строк регулярных выражений
title = re.compile(r'([^.?!]*[.?s!]Liz Copeland [^.?!]*[.?s!])t')
header = re.compile(r'tw .t. ')
with open(file) as f:
for line in f:
m_show = re.match(title, line)
m_header = re.match(header, line)
Приведенный выше код не выводит все строки с соответствующими шаблонами и дает мне нежелательные результаты
Пожалуйста, помогите мне с кодом. Заранее благодарю вас
Комментарии:
1. Вы можете попробовать что-то вроде этого
Ответ №1:
Как насчет использования следующего регулярного выражения:
.*?Liz Copeland. ?(d{1,2}[ap]m-d{1,2}[ap]m)s $
ДЕМОНСТРАЦИЯ:
https://regex101.com/r/BjTrgU/1/
Он соответствует всей строке, где присутствует Лиз Коупленд, с конечными пробелами
Комментарии:
1. anonymous13: не могли бы вы отметить ответы как правильные и проголосовать? Спасибо
Ответ №2:
Чтобы получить заголовок, вы можете сопоставить имя Liz Copeland
между границами слов b
и сопоставить 5 вкладок в конце строки:
.*?bLiz Copelandb.*t{5}
Демонстрация регулярных выражений
Чтобы соответствовать заголовку, вы могли бы использовать:
tNo.tArtisttSongtAlbum (Label)tCommentb
Демонстрация регулярных выражений
Не то, чтобы в последней строке buy 44661 Laurent Garnier The Man with the Red Face
отсутствовало содержимое между круглыми скобками, как в предыдущих в примере данных.
Комментарии:
1. Регулярное выражение отлично работает для заголовка. Регулярное выражение для заголовка должно соответствовать только «No. Исполнитель Песня Альбом (ярлык) Комментарий», он соответствует и другим строкам
2. @anonymous13 Вы могли бы сопоставить это так regex101.com/r/6poZbH/2 Я обновил ответ.
3. Я попробовал t w .t w t w t w s(w ) t w $ для строки заголовка, и это работает. Спасибо