потерять последний символ строки с регулярным выражением в pandas - PullRequest
1 голос
/ 23 апреля 2020

Так что я хочу только определенную часть строки в кадре данных. Но я не могу найти решение, чтобы пропустить]

Мое регулярное выражение (?P<error>(?<=-.).*?(?=\s[^]]))

Строка кадра данных: [app.py:1891 - log_exception] Exception on /batch_request [POST]

И это дает мне: "log_exception]", но я хочу только "log_exception"

Ответы [ 3 ]

1 голос
/ 23 апреля 2020

Измените свое регулярное выражение на:

(?P<error>(?<=-.).*?(?=[\s\]]))

В вашем регулярном выражении положительный прогноз содержит:

  • \s - пробел, а затем
  • [^]] - один символ, отличный от ].

Именно эта последовательность (пробел и E) происходит после ].

1 голос
/ 23 апреля 2020

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

df['colname'].str.extract(r'-\s*(?P<error>[^][]+)]\s')

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

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

  • - - дефис
  • \s* - 0+ пробелов
  • (?P<error>[^][]+) - группа "ошибка": 1 или более символов, отличных от [ и ]
  • ] - ] char
  • \s - пробел
1 голос
/ 23 апреля 2020
(?P<error>(?<=-.).*?(?=\]))

Вы можете использовать это. См. Демонстрацию.

https://regex101.com/r/A1QKj3/1

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