0

utf-8として解釈されるべきでしたが、そうではなかったテキストを含むテキストファイルがあります(この方法で渡されました)。ファイルの一般的な行の例を次に示します。

\ u30ed \ u30f3 \ u30c9 \ u30f3 \ u5728 \ u4f4f

すべきだった:

ロンドン

これで、コマンドラインに次のように入力することで、Pythonで手動で実行できます。

>>> h1 = u'\u30ed\u30f3\u30c9\u30f3\u5728\u4f4f'    
>>> print h1
ロンドン在住

それは私が欲しいものを私に与えます。これを自動的に行う方法はありますか?私はこのようなことをやってみました

>>> f = codecs.open('testfile.txt', encoding='utf-8')
>>> h = f.next()
>>> print h
\u30ed\u30f3\u30c9\u30f3\u5728\u4f4f

'encode'および'decode'関数も試してみましたが、何かアイデアはありますか?

ありがとう!

4

1 に答える 1

3

\u30ed\u30f3\u30c9\u30f3\u5728\u4f4fUTF8ではありません。Pythonユニコードエスケープ形式を使用しています。unicode_escape代わりにコーデックを使用してください。

>>> print '\u30ed\u30f3\u30c9\u30f3\u5728\u4f4f'.decode('unicode_escape')
ロンドン在住

比較のために、上記のフレーズのUTF-8エンコーディングを次に示します。

>>> '\u30ed\u30f3\u30c9\u30f3\u5728\u4f4f'.decode('unicode_escape').encode('utf-8')
'\xe3\x83\xad\xe3\x83\xb3\xe3\x83\x89\xe3\x83\xb3\xe5\x9c\xa8\xe4\xbd\x8f'

unicode_escapeでデコードされたデータは、認識されたPythonエスケープシーケンスではないものについてはLatin-1として扱われることに注意してください。

ただし、注意してください。文字エスケープを指定するために同じ表記法を使用するJSONエンコードされたデータを実際に見ている可能性があります。json.loads()実際のJSONデータをデコードするために使用します。このようなエスケープを含むJSON文字列は"引用符で区切られ、通常はより大きな構造(JSONリストやオブジェクトなど)の一部です。

于 2012-06-18T16:39:52.337 に答える