Попытка получить подстроку с помощью регулярных выражений в Python / pandas - PullRequest
0 голосов
/ 12 февраля 2019

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

У меня есть этот столбец, который содержит необработанные данные, которые выглядят как (три случая):

20181223-FB-BOOST-AAAA-CC Auchy-Les-Mines - Père Noel
20161224-FB-BOOST-SSSS-CC LeMarine - XXX XXX
20161223-FB-BOOST-XXXX-CC Bonjour le monde - Blah blah

Итак, что яхочу сделать, чтобы получить строки в середине после CC и прямо перед "-".Я написал скрипт, который работал для 2-го случая, но не для двух других:

1st case: Auchy-Les-Mines
2nd case: LeMarine
3rd case: Bonjour le monde

Вот регулярное выражение, которое я использовал, но никогда не работает для всех случаев: regex = r"\s\b.*-."

Заранее спасибо!

Ответы [ 2 ]

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

Вы можете сделать это довольно просто с помощью:

result = df.raw_data.str.extract(r'-CC (.*) -')
0 голосов
/ 12 февраля 2019

Вы мое использование

df['Col'].str.extract(r'-CC\s+(.*?)\s+-')

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

Детали шаблона

  • -CC - литеральная подстрока
  • \s+ - 1+ пробелов
  • (.*?) - Группа 1 (это значение будет возвращено .str.extract): любые 0+ символов, кроме новой строкикак можно меньше
  • \s+ - 1+ пробелов (+ здесь важно)
  • - - дефис

Тот факт, чтона обоих концах (.*?) есть шаблоны \s+, которые гарантируют, что результат уже будет удален из пробелов, независимо от того, сколько было пробелов.

...