Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 11, 2013 22:34:08

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

словари и utf8

Доброго времени суток, уважаемые.

Подскажите пожалуйста как выводить русские символы взятые из словарей?
Пример:

#!/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'}

Офлайн

#2 Сен. 11, 2013 23:13:41

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

словари и utf8

В 2.Х

dict_ = {1:u"Один", 2: u"Два"}
print repr(dict_).decode("unicode_escape")



Офлайн

#3 Сен. 12, 2013 00:09:47

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

словари и utf8

Ругается

 print repr(dict_).decode("unicode_escape")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 6-9: ordinal not in range(128)

Может какой модуль подгрузить?
И вообще почему такое происходит? Я ведь делаю coding=utf8.

Офлайн

#4 Сен. 12, 2013 00:11:33

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

словари и utf8

Вы мой словарь или свой подставляли?



Офлайн

#5 Сен. 12, 2013 00:18:51

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

словари и utf8

Ваш

Офлайн

#6 Сен. 12, 2013 00:28:46

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

словари и utf8

А так можно?

#coding=utf8

Я пишу так

#coding: utf-8

Или

# -*- coding: utf-8 -*-



Офлайн

#7 Сен. 12, 2013 22:21:15

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

словари и utf8

4kpt
#coding: utf-8

Спасибо, заработало! Моя ошибка.

Офлайн

#8 Сен. 16, 2013 12:28:56

vladimirse
Зарегистрирован: 2013-09-02
Сообщения: 69
Репутация: +  0  -
Профиль   Отправить e-mail  

словари и utf8

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

Как вывести русский текст прочитанный из файла? Вот код:

#!/usr/bin/python
# coding: utf-8
inputfile = open("input.txt", "rt")
for l in inputfile.readline():
	print l,
inputfile.close()

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

На выводе получаю:
             ,              !                                     ? 

Офлайн

#9 Сен. 16, 2013 16:28:38

malya
От:
Зарегистрирован: 2012-01-11
Сообщения: 49
Репутация: +  1  -
Профиль   Отправить e-mail  

словари и utf8

#!/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



Офлайн

#10 Сен. 16, 2013 16:40:45

malya
От:
Зарегистрирован: 2012-01-11
Сообщения: 49
Репутация: +  1  -
Профиль   Отправить e-mail  

словари и utf8

with open('input.txt', 'r') as file:
    for l in file:
        print l

Кстати странно! Без readline работает нормально даже без codecs.
С readline крякозяблы.
Только это в Линуксе, за поведение в Винде не берусь сказать.



Отредактировано malya (Сен. 16, 2013 16:41:53)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version