2017-02-22 63 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,你必須手工做