2017-02-22 4 views
0

Я только начал изучать python, и я занимаюсь упражнениями для словарей, но так как пример кода, который я должен использовать, находится в кириллице, у меня есть некоторые проблемы с кодировкой. У меня есть следующий код:Python Cyrilic output output

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

temperatures = { 
    'София': -14, 
    'Новосибирск': -31 
} 

print("-" * 20) 
print(temperatures) 

print("-" * 20) 

key = 'Бургас' 
if key in temperatures: 
    print(temperatures[key]) 
else: 
    print("No data for {}".format(key)) 

Перед добавлением # -*- coding: utf-8 -*- линию я получаю SyntaxError: Non-ASCII символ '\ xd0'. Теперь, однако, ошибка исчезла, но вывод слов в кириллице неверен. Это выход:

-------------------- 
{'\xd0\x9d\xd0\xbe\xd0\xb2\xd0\xbe\xd1\x81\xd0\xb8\xd0\xb1\xd0\xb8\xd1\x80\xd1\x81\xd0\xba': -31, '\xd0\xa1\xd0\xbe\xd1\x84\xd0\xb8\xd1\x8f': -14} 
-------------------- 
No data for Бургас 

Итак, слова в Cyrilic, которые распечатываются из питона Словаря перепутались, но линия Бургас кажется правильной. Я пробовал использовать print(format(temperatures)), но результат тот же. Если он печатает одно кириллическое слово, не следует ли печатать их все? Заранее спасибо.

ответ

0

Извините, не могу комментировать: Ваш код работает для меня (emacs on arch linux).

Редактировать: Мой интерпретатор python по умолчанию - это Python3.6, он получает тот же результат, что и вы с Python2.7. Требуется ли Python 2.7?

0

Предполагая, что вы используете Python 2, выход здесь как ожидалось:

  • при печати строки, печатается непосредственно
  • при печати dictionnary, ключи (и значения), напечатанные с использованием repr, а не str. Это объясняет, почему все символы, имеющие коды выше 255, используют свою экранированную форму.

Если вы хотите, чтобы отобразить dictionnary в Python 2, вы должны сделать это вручную :

h = temperatures 
print('{' + ', '.join((str(k)+ ': ' + str(h[k]) for k in h.keys())) + '}')