Как я могу удалить маркеры продолжения строки из вызова get_payload объекта Python? - PullRequest
0 голосов
/ 07 ноября 2011

В тестовом комплекте я пытаюсь убедиться, что в сообщении электронной почты указан определенный идентификатор. Сообщение было проанализировано из файла с использованием встроенного в Python метода email.message_from_file ().

Когда я получаю содержимое сообщения с помощью get_payload, оно разбивается на несколько строк и включает в себя маркеры продолжения строки (символ = в качестве последнего символа в строке). К сожалению, искомый идентификатор разбит на разрыв строки.

Хотя я мог бы изменить текстовую часть сообщения, чтобы избежать разделения идентификатора, я бы предпочел найти хороший механизм для рекомбинации непрерывных строк и восстановления исходной строки. Кто-нибудь может предложить хороший способ сделать это?

Ответы [ 2 ]

1 голос
/ 28 августа 2014

Для всех поздних пришедших на вечеринку: Используйте флаг decode для get_payload метода:

email.get_payload(decode=True)

Это убирает знаки =в качестве маркеров продолжения в конце строки, потому что это происходит только тогда, когда установлен соответствующий заголовок Content-Transfer-Encoding: quoted-printable.

1 голос
/ 07 ноября 2011
>>> s = 'blah blah iden=\ntifier blah blah'
>>> print s
blah blah iden=
tifier blah blah
>>> s.replace('=\n', '')
'blah blah identifier blah blah'
>>> s.replace('=\n', '').find('identifier')
10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...