Python eval integer в строке и возвращает целое число вместо ascii char - PullRequest
1 голос
/ 21 июля 2011

Я получаю некоторые данные из файла, который выглядит следующим образом:

[200, "Hello", "World"]

Теперь, поскольку это файл, этот массив находится внутри строки; Я превращаю его в массив, используя eval(). Это прекрасно работает, НО целое число в начале преобразуется в символ ascii, а не целое число, как я хочу (знак евро).

Как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

Вы можете использовать literal_eval. Действительно зависит от источника - является ли источник говорящим на Python или JSON - существует много совпадений, когда они имеют идентичные представления

>>> from ast import literal_eval
>>> literal_eval('[200, "Hello", "World"]')
[200, 'Hello', 'World']
2 голосов
/ 21 июля 2011

Вы можете использовать модуль simplejson .Например,

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

Таким образом "вредоносные" данные, такие как os.execvp(), не будут оцениваться, но будет выдано JSONDecodeError.

...