Я довольно новичок в Python и не могу найти формулировку, чтобы выяснить это через поиск в Google или поиск здесь.Я пытаюсь написать строку кода на Python, чтобы извлечь определенное число из строки темы электронного письма.Я читаю данные письма в фрейм данных Panda (столбцы, разделенные по теме, получателю, отправителю и т. Д.).Номер всегда будет в одной и той же позиции, но будет различаться по длине (минимум 4, максимум 9).
Например:
Email Subject Line: 'No, I will submit changes: Action Required: RIC
CR 2.6.7.1-5 - Active Confirmation - Affected: Doe, John 012345 - Date
Sent: 01-02-2019'
Ожидаемый результат: 012345
То, что я считаю наилучшим маршрутом, - это взять строку между вторым, последним и последним '-' (т.е. Затронутый: Доу, Джон 123456).Как только я это получу, извлеките 123456 из этой подстроки.Но, как указывалось ранее, это число может варьироваться по длине от 4 до 9.Как и в примере, иногда это число имеет начальный ноль, и мне нужно, чтобы оно не падало.Кроме того, имя, очевидно, также будет различаться.
Возможно ли это?
Я только попытался нарезать строку, но я чувствую, что это неизбежно превратится вкошмар сценария if
- else
.
sixdigitnumber = df.subject[0][-30:][:6].strip()
Я получаю ожидаемый результат, но чувствую, что есть более умный или более «питонический» способ сделать это.Пожалуйста, дайте мне знать, если я мог бы уточнить еще!
Обновление № 1:
Я также пробовал регулярные выражения, но не уверен, что это все еще лучшемаршрут?путь.
Например:
import re
regexpression= re.search('Manager: (.*) -', df.subject[0])
result = regexpression.group(1).rsplit(' ', 1)[1]
print (f'{result}')