2012-01-06 5 views
0

私はPythonにラインのこの種を分割しよう:多言語の行をPythonで分割し、Unicodeの16進値を取得するにはどうすればよいですか?

aiburenshi 爱不忍释 "לא מסוגל להינתק, לא יכול להיפרד מדבר מרוב חיבתו אליו"

この行は、ヘブライ語、簡体字中国語と英語が含まれています。私は、例えばタプルTを持っている場合は

は、私はT =(ヘブライ文字列、英語の文字列、中国の文字列)であることをタプルを取得したいと思います。

問題は、私は、ヘブライ語の文字の中国のUnicode値を取得する方法を見つけ出すないということです。これらの両方の行は機能しません。

print ((unicode("释","utf-8")).encode("utf-8")) 
print ((unicode("א","utf-8")).encode("utf-8")) 

そして、私はこのエラーを取得:

SyntaxError: Non-ASCII character '\xe9' in file split_or.py on line 9, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

+1

それはあなたが(2.xまたは3.xの)を使用しているのPythonのバージョンを示す価値があるかもしれません質問、タグ、またはその両方に含まれています。 –

+1

ファイルの先頭に#coding:utf-8などのエンコードを宣言しましたか? –

+0

あなたが言いたい問題は、それを解決する方法を教えてくれるテキストへのリンクを含んでいる非常にクリアなエラーです。なぜあなたはリンクを読んでいないのですか?結果として、これは(http://stackoverflow.com/questions/6289474/working-with-utf-8-encoding-in-python-source)PythonソースでUTF-8エンコーディングを扱う]の重複である –

答えて

2

は、Python 2では、あなたはこのようにエンコーディングを指定してファイルを開く必要があります。

import codecs 
f = codecs.open("myfile.txt","r",encoding="utf-8") 

のPython 3では、あなただけの任意のオープンにエンコードオプションを追加することができます()を呼び出します。

これは、ファイルが正しく復号されることを保証します。 (たとえばhttp://www.pycs.net/users/0000323/stories/14.htmlを参照し、それはちょうどスタートだ)多くのものに依存している、これはあなたの印刷の呼び出しが正常に動作することを意味しないことに注意してください。適切なデバッガを使用するか、ファイルに出力する方が良いでしょう(これは再びcodecs.open()で開きます)。

は、実際のコードポイント(すなわち整数「値」)を取得するには、組み込みのORD()を使用することができます:あなたは、異なる言語の範囲を知っていれば

>>> ord(u"£") 
163 

が、それはあなたが必要とするすべてです。範囲については、this pageまたはthis pageを参照してください。

そうでない場合、あなたは双方向のカテゴリのように、ものをルックアップするためにunicodedataを使用する場合があります:どちらか

>>> unicodedata.bidirectional(u"£") 
ET # 'E'uropean 'T'erminator 
2

は、Python 2では、Unicode文字列定数は、のように、 "U" の文字で始まるする必要がありますが:

print ((unicode(u"释","utf-8")).encode("utf-8")) 
print ((unicode(u"א","utf-8")).encode("utf-8")) 

Python 3では、文字列定数はデフォルトでUnicodeです。