Найти - Пользователи
Полная версия: словари и utf8
Начало » Python для новичков » словари и utf8
1 2
vladimirse
Доброго времени суток, уважаемые.

Подскажите пожалуйста как выводить русские символы взятые из словарей?
Пример:
#!/usr/bin/python
#coding=utf8
print "Русский текст"
dict = {"one":"один","two":"два"}
print dict

Вывод:
./test_dict.py  
Русский текст
{'two': '\xd0\xb4\xd0\xb2\xd0\xb0', 'one': '\xd0\xbe\xd0\xb4\xd0\xb8\xd0\xbd'}
4kpt
В 2.Х

dict_ = {1:u"Один", 2: u"Два"}
print repr(dict_).decode("unicode_escape")
vladimirse
Ругается
 print repr(dict_).decode("unicode_escape")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 6-9: ordinal not in range(128)

Может какой модуль подгрузить?
И вообще почему такое происходит? Я ведь делаю coding=utf8.
4kpt
Вы мой словарь или свой подставляли?
vladimirse
Ваш
4kpt
А так можно?

#coding=utf8

Я пишу так

#coding: utf-8

Или

# -*- coding: utf-8 -*-
vladimirse
4kpt
#coding: utf-8

Спасибо, заработало! Моя ошибка.
vladimirse
Еще похожий вопрос образовался, не буду создавать новую тему.

Как вывести русский текст прочитанный из файла? Вот код:
#!/usr/bin/python
# coding: utf-8
inputfile = open("input.txt", "rt")
for l in inputfile.readline():
	print l,
inputfile.close()

В файле русский текст в utf-8:
Привет, ребята! Как бодрость духа?

На выводе получаю:
             ,              !                                     ? 
malya
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import codecs
 
with codecs.open('input.txt', 'r', 'utf-8') as file:
    for l in file:
        print l
malya
with open('input.txt', 'r') as file:
    for l in file:
        print l

Кстати странно! Без readline работает нормально даже без codecs.
С readline крякозяблы.
Только это в Линуксе, за поведение в Винде не берусь сказать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB