2017-02-22 81 views
0

我刚开始学习python,我正在为词典做练习,但由于我必须使用的示例代码是在Cyrilic中,所以我遇到了一些编码问题。我有以下代码:非ASCII字符“\ XD0”:Python Cyrilic编码输出

#!/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之前。然而,现在错误消失了,但cyrilic中的单词输出并不正确。这是输出:

-------------------- 
{'\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)),但输出是相同的。如果它打印出一个Cyrilic字,是不是应该把它们全部打印出来?提前致谢。

回答

0

对不起,还不能评论:您的代码适合我(emacs在arch linux上)。

编辑:我的默认Python解释器是Python3.6,它获得与Python2.7相同的输出。 Python 2.7是否是一项要求?

0

假设使用一个Python 2,这里的输出是如预期

  • 当打印一个字符串,它是直接在打印一个dictionnary印刷
  • ,键(和值),使用repr而不是str印刷。这就解释了为什么所有代码​​点高于255的字符都使用其转义形式。

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

如果你想在Python 2显示dictionnary,你必须手工做