Сопоставление с шаблоном с помощью регулярных выражений python - PullRequest
1 голос
/ 28 января 2020

Вот текстовые примеры:

  • Американская психологическая ассоциация. (2016). Центр эпидемиологических исследований депрессии (CESD) . Получено 7 декабря 2016 года от Американской психологической ассоциации, http://www.apa.org/pi/ о / публикации / попечители / практика-настройки / оценка / инструменты / депрессия-scale.aspx
  • Битт ie, GS (2005, ноябрь). Социальные причины депрессии . Получено 31 мая 2017 г., http: // www.personalityresearch.org/papers/beattie.html

Я хочу выделенную жирным шрифтом часть текста, для которой я пробовал:

/\)\.|\s[a-zA-Z]+\./

Здесь я ищу ' )' тогда '.' затем «пробел» и затем текст до «.»

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

Может кто-нибудь помочь мне, почему он не работает, и как можно найти другой способ найти такой текст в моем столбце данных?

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Вы можете использовать следующее регулярное выражение с Series.str.extract:

\)\.\s+([^.]+)

См. Демонстрационное регулярное выражение .

Подробно

  • \)\. - ). подстрока
  • \s+ - 1+ пробелов
  • ([^.]+) - Группа 1: один или несколько символов, отличных от точки

В Pandas вы можете использовать его как

df['res_col'] = df['orig_col'].str.extract(r'\)\.\s+([^.]+)', expand=False)

Обновление согласно комментариям

Более конкретное c регулярное выражение, которое допускаются любые известные сокращения:

[\d)]\.\s*((?:\ba\.k\.a\.|[^.])+)

См. еще одно демонстрационное выражение . Подробности:

  • [\d)] - либо ди git, либо )
  • \. - точка
  • \s* - 0 или более пробелы
  • ((?:\ba\.k\.a\.|[^.])+) - Группа 1: одно или несколько вхождений подстроки a.k.a. как целого слова или любого символа, кроме точки.
0 голосов
/ 28 января 2020

Попробуйте это

(?<=\)\.)[\w\s\(\)]*(?=\.)
  • (?<=\)\.) Это поиск за поиском, чтобы проверить, если ")." предшествует).
  • [\w\s\(\)]* Разрешить все слова и пробельные символы, а также (и) символы.
  • (?=\.) Это поиск с предварительным просмотром для проверки символов.

Вы можете проверить это здесь

enter image description here

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