У меня есть электронные письма, в теле письма которых есть (из переменной email_body):
тело для 1-го электронного письма:
2.email:
3 электронная почта:
То же, что и для 2, просто другое имя машины
В этих письмах есть вложения, в которых также есть названия вакансий, я хочу получить название вакансии для каждого письма только один раз
for emailid in items:
resp, data = conn.uid("fetch",emailid, "(RFC822)")
if resp == 'OK':
email_body = data[0][1].decode('utf-8')
mail = email.message_from_string(email_body)
#get all emails with words "PA1" or "PA2" in subject
if mail["Subject"].find("PA1") > 0 or mail["Subject"].find("PA2") > 0:
#search email body for machine name (string after word "MACHINE")
regex1 = r'(?<!^)MACHINE:\s*(\S+)'
a=re.findall(regex1 ,email_body)
print (c)
пример тела сообщения из первого сообщения электронной почты для раздела MACHINE, полученного из кода Python, это переменная email_body, которую нужно искать с помощью регулярного выражения:
MACHINE: =^M
ldnmdsbatchxl01
Тело электронной почты для 2-го письма
MACHINE: p2prog06^M
MACHINE: p2prog06<br>^M
Разница в разрыве строки в 1-м теле письма
Токовый выход
['p1prog06', 'p1prog06<br>']
['p2prog06', 'p2prog06<br>']
['=', '=']
Как вы можете видеть, я получаю дублирующиеся вакансии и пропущенные имена из первого письма
Желаемый выход
['p1prog06']
['p2prog06']
['ldnmdsbatchxl01']
UPDATE
Благодаря @Predicate я удалил дубликаты для 2-го и 3-го электронных писем
regex2 = r'(?<=MACHINE: )\b\w+\b|$'
до сих пор не знаю, как получить работу с первого письма (разрыв строки)