Это своего рода продолжение моего другого поста: Извлечение чисел из строки при определенных условиях
Подводя итог, у меня есть несколько строк, которые хранятся в фрейме данных, и я хочуизвлечь первое число, соответствующее всем условиям (если оно существует).Вот условия:
Число НЕ МОЖЕТ быть в начале строки
Оно НЕ МОЖЕТ появиться после слова "№" илипосле слова «Вопрос»
Число НЕ МОЖЕТ быть между значениями 1960 - 2020
Если после номера сразу следует буква eЯ хочу извлечь е с его помощью
Это то, что я до сих пор, чтобы найти числа, он заботится о первых двух условиях:
for index, row in df.iterrows():
test = re.search(r'(?!^)(?<!\bNo\.\s)(?<!\bQuestion\s)(\d+)(?!\d)',
row['name'])
if test:
df.loc[
df['name'] == row['name'], ['id']] = test.group()
Я также пытался использовать:
\b(?!196[0-9]\d|20[012][0])\d+\b
, чтобы учесть число, которое не находится между значениями 1960 - 2020 гг., Но, похоже, оно не работает.Я также не понимаю, как поймать e, если он там есть.
Пример 1:
"Trial No. 32819 Question 485 Article 787e"
Я бы хотел, чтобы выражение регулярного выражения возвращало
[787e]
Пример 2:
"2981 XYZ Legislature"
Я бы хотел, чтобы выражение regex возвращало
None
Пример 3 "
"Addendum217Null"
Я хотел бы, чтобы выражение regex возвращалось
[217]
Заранее спасибо за любую помощь!