2017-08-08 8 views
2

私はここから始めています。私はすべてのルールに従うことを願っています。 スペイン語(つまりCL)の略語とそれぞれの1つの都市(つまりレオン)が一致するキーと値のペアを持つ{..., 'CL': 'León', ...}の辞書があります。私は行を含めたダブルバイト16進値

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

私はチルドのようなutf文字を使用することができました。私のように全体の辞書をプリントアウトするとき

print cities['CL'] 

は、しかし:

print cities 

私は二重の持っているものは、私は個々の値をプリントアウトしたときに、すべてがうまくいくと、出力が正しくチルダが含まれていることですこの場合は\xc3\xb3です。

これはなぜですか? ありがとうございます。バイト文字列の場合

+0

興味深い問題私の友人、チェックアウトhttps://stackoverflow.com/questions/8288551/how-do-i-display-non-english-characters-in-pythonの –

+1

可能な重複[どのように表示されませんPythonの非英語文字?](https://stackoverflow.com/questions/8288551/how-do-i-display-non-english-characters-in-python) – DyZ

+0

これも同様に:https:// stackoverflow .com/questions/27814363 /英文以外の英字を含むファイルへの書込み方法 –

答えて

0

別のpython特定のエンコーディングがあります:string-escape

>>> d = {'a' : 'тест', 'b': 'тост'} 
>>> print repr(d).decode('string_escape') 
{'a': 'тест', 'b': 'тост'} 

は、Python 2 print文では、文字列に引数の変換を起動します。デフォルトでは、この値に非ASCII文字が含まれている場合、エスケープされます。

repr()ビルトインとエスケープ借用another SO postからこの表現を得ることができます。

ただし、値が適切なユニコード文字列、たとえば接頭辞がuの文字列定数の場合、その表現とデコードは異なります。

>>> d = {'a' : u'тест', 'b': u'тост'} 
>>> print d 
{'a': u'\u0442\u0435\u0441\u0442', 'b': u'\u0442\u043e\u0441\u0442'} 
>>> print repr(d).decode("unicode-escape") 
{'a': u'тест', 'b': u'тост'}