2016-07-01 5 views
0

ユニコード文字がsomething\u0142somethingelseの形式のファイルからの単語を操作するスクリプトを作成しています。ファイルからユニコード文字を正しく表示できません。

私はPython 3を使用していますので、\u0142の行を読んだ後に'ł'文字に置き換える必要がありますが、そうではありません。コンソールには"something\u0142somethingelse"が届きます。

手動でコンソールから「不良」出力をコピーして貼り付けた後、print("something\u0142somethingelse")が正しく表示されます。私は本当にこのファイルを開くときにUTF-8エンコーディングで実験し、

something\u0142somethingelse 
somethingłsomethingelse 

スクリプトの問題の一部:

list_of_files = ['test/stack.txt'] 

for file in list_of_files: 
    with open(file,'r') as fp: 
     for line in fp: 
      print(line) 
      print("something\u0142somethingelse") 

stack.txt:

something\u0142somethingelse 

出力私はアイデアがありません...

+0

あなたのファイルは '何かの\ u0142somethingelse'が含まれており、あなたのプログラムの出力'何かの\ u0142somethingelse'場合...その後何があります問題は、正確には? – melpomene

+0

\ u0142を '³'文字に置き換えてください。 – pierscin

+0

さて、そうするためにコードを書く必要があるでしょう。 – melpomene

答えて

0

ast.literal_evalであなたが望むことができると思います。これは、リテラルを理解するためにPythonインタプリタと同じ構文を使用します:evalなどですが、より安全です。だから、これは例えば、動作します:

a = 'something\\u0142somethingelse' 

import ast 

b = ast.literal_eval('"' + a + '"') 
print '"' + a + '"' 
print b 

出力は次のようになります。

"something\u0142somethingelse" 
somethingłsomethingelse 
+0

Python3でうまく動作します。私はそれほど清潔ではない回避策を取り除くことができます。ありがとう! – pierscin

関連する問題