У меня есть папка из 150 писем, все сохраненные как файлы HTML (расширения Firefox), и мне нужно записать год, который всегда находится в строке «Отправлено»; как показано на фотографии ниже.Разбор строки «Отправлено» по электронной почте
Я попытался с помощью регулярных выражений, но это не удалось; он не печатает никакого результата вообще, указывая мне, что мой RegEx не работал. Я пробовал использовать команды get_payload()
и message_from_string()
из модуля email
, но поскольку это документ HTML, это не удалось. Затем я попытался использовать BeautifulSoup, чтобы захватить всю электронную почту, а затем проанализировать только строку «Отправлено», но мне не удалось по неизвестным причинам. Я не эксперт ни с одним из этих модулей, поэтому любая помощь будет оценена по достоинству.
Соответствующий код, который я пробовал:
for filename in os.listdir(path):
file_path = os.path.join(path, filename)
if os.path.isfile(file_path):
html_ = open(file_path, 'r').read()
soup_ = BeautifulSoup(html, 'lxml')
pattern = re.compile(r'Sent:/s([/d]{4})')
txt = html.read()
dates = pattern.findall(txt)
if "Sent" in line:
print("Date:", ''.join(dates))
Использовать 'r'Sent:. *? \ B (\ d {4}) \ b'' –
Я думаю, что это зависит от форматирования электронной почты в формате HTML ... Кроме того, есть ли способ получить сырые данные электронной почты? Parsing _that_ может быть проще с тех пор вам просто нужно найти «Отправленный» заголовок ... – mgilson
@ WiktorStribiżew, который отлично поработал вам. Я действительно думал, что мои навыки в RegEx улучшились, и на этот раз я получил бы это самостоятельно, но я могу сказать, прочитав ваше, что я был довольно далеко – theprowler