Как парсить немецкий умлаут и другие специальные символы из электронных писем ⇐ Python
Как парсить немецкий умлаут и другие специальные символы из электронных писем
Я пытаюсь проанализировать электронное письмо, используя модуль email Python с его Parser(), предоставляемым подмодулем email.utils.
Однако есть некоторые специальные символы, которые мне не удалось правильно проанализировать/преобразовать.
Вот сценарий, который я получил на данный момент:
импортировать систему импортировать электронную почту из email.parser импортировать парсер full_msg = Parser().parse(sys.stdin) msg =full_msg # эта уродливая строка — часть предыдущей отладки отправитель = сообщение['от'] to = сообщение['to'] тема = сообщение['тема'] тело = msg.get_payload() дата = сообщение['Дата'] fname = '{}.txt'.format(дата) с open(fname, 'w') как f: f.write('{:10}{}\n'.format('Фон:', отправитель)) f.write('{:10}{}\n'.format('An:', to)) f.write('{:10}{}\n'.format('Betreff:', subject)) f.write('{}\n'.format(тело)) Поскольку я анализирую как международные, так и немецкие письма, мне приходится иметь дело с так называемым «умлауте» (ä, ü, ö) и некоторые другие символы, такие как ß и многоточие (...).
Например, тело типа
Würde Dürfte Könnte получить
W=C3=BCrde D=C3=BCrfte K=C3=B6nnte= и тема
Для быстрого запуска двигателя становится
=?utf-8?Q?Das_d=C3=BCrfte_jetzt_klappen?= Есть ли способ решить эти проблемы с кодированием/декодированием? Что мне не хватает?
ОБНОВЛЕНИЕ 1:
Язык системы, соответственно. кодировка была установлена на en_US.UTF-8. Я изменил его на de_DE.UTF-8, перенастроив доступные локали. Однако это нисколько не изменило результат. локаль дает:
LANG=de_DE.UTF-8 ЯЗЫК= LC_CTYPE="de_DE.UTF-8" LC_NUMERIC="de_DE.UTF-8" LC_TIME="de_DE.UTF-8" LC_COLLATE="de_DE.UTF-8" LC_MONETARY="de_DE.UTF-8" LC_MESSAGES="de_DE.UTF-8" LC_PAPER="de_DE.UTF-8" LC_NAME="de_DE.UTF-8" LC_ADDRESS="de_DE.UTF-8" LC_TELEPHONE="de_DE.UTF-8" LC_MEASUREMENT="de_DE.UTF-8" LC_IDENTIFICATION="de_DE.UTF-8" LC_ALL= ОБНОВЛЕНИЕ 2:
Я узнал, что этот тип форматирования строк называется Quoted-printable. Для обработки этого формата существует модуль Python под названием quopri, но мне не удалось получить удовлетворительные результаты. Однако я перешел на JavaScript с помощью MailParser, который работает просто великолепно.
Я пытаюсь проанализировать электронное письмо, используя модуль email Python с его Parser(), предоставляемым подмодулем email.utils.
Однако есть некоторые специальные символы, которые мне не удалось правильно проанализировать/преобразовать.
Вот сценарий, который я получил на данный момент:
импортировать систему импортировать электронную почту из email.parser импортировать парсер full_msg = Parser().parse(sys.stdin) msg =full_msg # эта уродливая строка — часть предыдущей отладки отправитель = сообщение['от'] to = сообщение['to'] тема = сообщение['тема'] тело = msg.get_payload() дата = сообщение['Дата'] fname = '{}.txt'.format(дата) с open(fname, 'w') как f: f.write('{:10}{}\n'.format('Фон:', отправитель)) f.write('{:10}{}\n'.format('An:', to)) f.write('{:10}{}\n'.format('Betreff:', subject)) f.write('{}\n'.format(тело)) Поскольку я анализирую как международные, так и немецкие письма, мне приходится иметь дело с так называемым «умлауте» (ä, ü, ö) и некоторые другие символы, такие как ß и многоточие (...).
Например, тело типа
Würde Dürfte Könnte получить
W=C3=BCrde D=C3=BCrfte K=C3=B6nnte= и тема
Для быстрого запуска двигателя становится
=?utf-8?Q?Das_d=C3=BCrfte_jetzt_klappen?= Есть ли способ решить эти проблемы с кодированием/декодированием? Что мне не хватает?
ОБНОВЛЕНИЕ 1:
Язык системы, соответственно. кодировка была установлена на en_US.UTF-8. Я изменил его на de_DE.UTF-8, перенастроив доступные локали. Однако это нисколько не изменило результат. локаль дает:
LANG=de_DE.UTF-8 ЯЗЫК= LC_CTYPE="de_DE.UTF-8" LC_NUMERIC="de_DE.UTF-8" LC_TIME="de_DE.UTF-8" LC_COLLATE="de_DE.UTF-8" LC_MONETARY="de_DE.UTF-8" LC_MESSAGES="de_DE.UTF-8" LC_PAPER="de_DE.UTF-8" LC_NAME="de_DE.UTF-8" LC_ADDRESS="de_DE.UTF-8" LC_TELEPHONE="de_DE.UTF-8" LC_MEASUREMENT="de_DE.UTF-8" LC_IDENTIFICATION="de_DE.UTF-8" LC_ALL= ОБНОВЛЕНИЕ 2:
Я узнал, что этот тип форматирования строк называется Quoted-printable. Для обработки этого формата существует модуль Python под названием quopri, но мне не удалось получить удовлетворительные результаты. Однако я перешел на JavaScript с помощью MailParser, который работает просто великолепно.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как настроить воспоминания о работе на хинди, немецкий язык, нерландский язык? [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-