Как я могу извлечь имя автора и дату публикации, используя регулярное выражение? - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь извлечь из этого текста HTML имя автора и дату публикации.

Вот что у меня есть: (authorName) = (".............. ")

Это работает только для этого конкретного случая, и я ищу общий подход.Могу ли я получить какие-либо советы о том, как к этому подойти?

Учитель - яркий пример того, куда SF должен вкладывать деньги "; var omni_bizObjectId =" 13560483 "; var omni_className =" article "; var omni_publicationDate ="2019-01-25T12: 00: 00 + 00: 00 "; var omni_sourceSite =" sfgate "; var omni_authorName =" Heather Knight "; var omni_authorTitle =" "; var omni_premiumStatus =" isPremium "; var omni_premiumEndDate =" 1893506400 ";var omni_originalSource = "SF"; var omni_pageNumber = "1"; var omni_breakingNewsFlag = "0"; var omni_localNewsFlag = "1"; var omni_isListView = "0"; var omni_paywallSite = "1"; var omni_displayTemplate1008 *

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете использовать это регулярное выражение для захвата имени автора в group1,

authorName\s+=\s+"([^"]*)"

Это регулярное выражение соответствует authorName буквально, затем один или несколько пробелов, затем =, затем снова один или несколько пробелов, затемdoublequote " затем захватывает любые данные между следующей двойной кавычкой и сохраняет их в group1, которые в Python могут быть получены с помощью m.group(1)

Demo

Проверьте этот код Python, чтобы узнать, как собирать данные из группы 1,

import re

s = 'teacher a prime example of where SF should invest windfall";var omni_bizObjectId = "13560483";var omni_className = "article";var omni_publicationDate = "2019-01-25T12:00:00+00:00";var omni_sourceSite ="sfgate";var omni_authorName = "Heather Knight";var omni_authorTitle = "";var omni_premiumStatus = "isPremium";var omni_premiumEndDate = "1893506400";var omni_originalSource = "SF";var omni_pageNumber = "1";var omni_breakingNewsFlag = "0";var omni_localNewsFlag = "1";var omni_isListView = "0";var omni_paywallSite = "1";var omni_displayTemplate = "ard";'

m = re.search(r'authorName\s+=\s+"([^"]*)"',s)
if (m):
 print(m.group(1))

Печатает только имя автора,

Heather Knight

Редактировать: Спасибо Onyambu за указание напубликацииDate.

Точно так же, как authorName, вы можете использовать приведенное выше регулярное выражение и заменить authorName на publicationDate и использовать это регулярное выражение также для захвата publicationDate.

publicationDate\s+=\s+"([^"]*)"

Демонстрация для публикацииДата

Если вы хотите извлечь оба с одним регулярным выражением, вы можете использовать это регулярное выражение,

(?i).*publicationdate\s+=\s+"([^"]*)".*authorName\s+=\s+"([^"]*)"

Демонстрация

Коды Python,

import re

s = 'teacher a prime example of where SF should invest windfall";var omni_bizObjectId = "13560483";var omni_className = "article";var omni_publicationDate = "2019-01-25T12:00:00+00:00";var omni_sourceSite ="sfgate";var omni_authorName = "Heather Knight";var omni_authorTitle = "";var omni_premiumStatus = "isPremium";var omni_premiumEndDate = "1893506400";var omni_originalSource = "SF";var omni_pageNumber = "1";var omni_breakingNewsFlag = "0";var omni_localNewsFlag = "1";var omni_isListView = "0";var omni_paywallSite = "1";var omni_displayTemplate = "ard";'

m = re.search(r'(?i).*publicationdate\s+=\s+"([^"]*)".*authorName\s+=\s+"([^"]*)"',s)
if (m):
 print('Publication Date:', m.group(1))
 print('Author Name:', m.group(2))

Печать,

Publication Date: 2019-01-25T12:00:00+00:00
Author Name: Heather Knight
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...