2011-07-21 32 views
1

私は、このようなファイルから、いくつかのデータを取得しています:これはファイルであることから、この配列は内部で、今文字列のPythonのevalの整数を、整数を返す

[200, "Hello", "World"] 

文字列; eval()を使って配列に変換します。 これはうまく動作しますが、開始時の整数は整数ではなくascii charに変換されます(ユーロ記号)。

どうすればこの問題を解決できますか?

+2

を持つ重複がたくさんあります。 >>> z = eval( "[200、\" hello \ "、\" world \ "]」) >>> z [200、 'hello'、 'world'] – Grim

+0

@Judge John Deed ascii char?どのアスキーチャー?私はあなたが何を記述するのか観察しない – eyquem

答えて

2

simplejsonモジュールを使用できます。例えば。このようos.execvp()として

>>> import simplejson 
>>> a = simplejson.loads('[200, "Hello", "World"]') 
>>> print a 
[200, 'Hello', 'World'] 

この方法で「悪質な」データは評価されないだろうが、JSONDecodeErrorがスローされます。

2

literal_evalを使用できます。本当にソースに依存します - PythonやJSONを話す源である - 彼らはこれが私のためにうまく働いた同じ表現

>>> from ast import literal_eval 
>>> literal_eval('[200, "Hello", "World"]') 
[200, 'Hello', 'World'] 
関連する問題