2017-06-30 12 views
-1

私はpython 2.7.13を使用しています。私のpythonスクリプトは、ヘブライ語を含む辞書を生成します。Python辞書に特殊文字を表示する

コードは以下の通りである、

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

val = "אבג".decode('utf-8') 
print val 
dict = { 
     'attributes' : { 
     'OBJECTID_1' : 1, 
     'LOCID' : val 
     } 
} 
print dict 

次のような結果であり、

אבג 
{'attributes': {'LOCID': u'\u05d0\u05d1\u05d2', 'OBJECTID_1': 1}} 

最初の結果は、我々が '印刷' を使用するので、予想されるように示しています。しかし、私が作成した辞書では、ヘブライ語はユニコードとして表示されます。

実際のヘブライ語を辞書に表示する方法はありますか?それともこれは期待されていますか?あなたは、リストをプリントアウトするときpython2で

+2

これは問題ありません。あなたがしていることは、文字列の 'repr'を出力することです。あなたはこれが本当であることを確認できます: –

+2

簡単な修正は遅すぎるのではなく、Python 3に切り替えることです。 – ForceBru

+0

'>>> val; u '\ u05d0 \ u05d1 \ u05d2'; >>> print val; אבג' –

答えて

0

おかげで、あなたはそのリストの内容のreprを印刷してしまいます。

python3では、文字列のreprは戻り値のstrと同じです。あなたは以下にこれを観察することができます。

をPython2

>>> val = "אבג".decode('utf-8') 
>>> val   # displays repr value 
u'\u05d0\u05d1\u05d2' 
>>> print val # displays str value 
אבג 

そして、前述したように、のpython3でConstrasting

>>> print [val] 
[u'\u05d0\u05d1\u05d2'] 

strオブジェクトがdecode機能を持っていない - 彼らは既に復号化されています。

>>> val = "אבג" 
>>> val 
'אבג' 
>>> print(val) 
אבג 
>>> print([val]) 
['אבג'] 

これは今すぐ動作する理由です。あなたの問題のために

、あなたはそれはあなたが辞書を印刷するとき、あなたがこれを行うことができているように、文字を表示したい場合は:それはシャドウ以来

print dict['LOCID'] 

サイドノートでは、変数に名前を付けるdictを使用していませんあなたが使っている非常に重要な組み込みクラス。

+0

ご返信ありがとうございます。それは理にかなっている。私はちょうど頭に行くとpython 3を使用すると思う。 –

+0

@ HarveyJing喜んでそれが助けた。 :) –

関連する問題