python 3.5: модуль почтового ящика не может декодировать iso-8859-1 - PullRequest
0 голосов
/ 05 октября 2019

У меня есть скрипт для разбора файлов почтовых ящиков, и он отлично работает с python 2.7. Заголовок закодирован как iso-8859-1, и поэтому я могу легко его расшифровать, как показано ниже:

import mailbox
logfile = '/var/mail/mailuser'
mbox = mailbox.mbox(logfile)
for msg in mbox:
      sender = unicode(msg ["From"].replace("'", '').replace('"', '') , 'ISO-8859-1')

Теперь я хотел бы запустить его с python3, так как в python3 все по умолчанию unicode, я надеваюНе нужно конвертировать текст в Unicode, и я предполагаю, что библиотека должна быть в состоянии обрабатывать кодировки. моя версия кода на python3 выглядит следующим образом:

import mailbox
logfile = '/var/mail/mailuser'
mbox = mailbox.mbox(logfile)
for msg in mbox:
  sender =msg ["From"].replace("'", '').replace('"', '') 

, но выдает ошибку:

File "read_smtp_3.py", line 147, in read_log_files
    for msg in mbox:
  File "/usr/local/lib/python3.5/mailbox.py", line 108, in itervalues
    value = self[key]
  File "/usr/local/lib/python3.5/mailbox.py", line 72, in __getitem__
    return self.get_message(key)
  File "/usr/local/lib/python3.5/mailbox.py", line 779, in get_message
    msg.set_from(from_line[5:].decode('ascii'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 4: ordinal not in range(128)

Поскольку библиотека не может декодировать текст, я не уверен, как я могусправиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...