Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 18, 2011 00:13:31

notfedor
От:
Зарегистрирован: 2011-10-17
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при записи в файл. Нужна помощь...

при записи списка в файл, используя вот такой код:

f.write("\n".join([str(i) for i in mlist]))
Вылетает вот такая ошибка:
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 47-82: ordinal not in range(128)

В чем проблема? Как лечить?
Спасибо.



Офлайн

#2 Окт. 18, 2011 06:02:28

lavrton
От:
Зарегистрирован: 2010-11-13
Сообщения: 35
Репутация: +  1  -
Профиль   Адрес электронной почты  

Ошибка при записи в файл. Нужна помощь...

В какой кодировке строка? Что является элементом списка? Использовать примерно следующее, если элементы в юникоде:

i.encode('utf8')
#или
str(i).encode('utf8')



Отредактировано (Окт. 18, 2011 06:03:03)

Офлайн

#3 Окт. 18, 2011 15:35:16

notfedor
От:
Зарегистрирован: 2011-10-17
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Ошибка при записи в файл. Нужна помощь...

не помогло…
для перекодирования использую вот такой код(спасибо pyuser)

def _decode_header(msg):
header = {"from": None, "to": None, "subject": None}
for h in header:
txt, enc = decode_header(msg[h])[0]
header[h] = txt.decode(enc) if enc else txt
frm=header
sbj=header
return header,frm,sbj

...

#вот сама строка
mlist.append(';;'+_decode_header(msg)[1]['from']+'::'+_decode_header(msg)[2]['subject']+'::'+uidl+';;'+'\n')



Офлайн

#4 Окт. 20, 2011 07:46:09

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Ошибка при записи в файл. Нужна помощь...

сначала выведи на экран то, что выводишь в файл
там может находится не то, что ты думаешь



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version