Python在字符串中使用eval整数,并返回整数而不是ascii char

时间:2011-07-21 08:41:48

标签: python integer ascii eval

我从文件中获取了一些数据,如下所示:

[200, "Hello", "World"]

现在,因为这是一个文件,所以这个数组在一个字符串中;我使用eval()将其转换为数组。 这工作正常,但开始时的整数转换为ascii char,而不是我想要的整数(欧元符号)。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以使用simplejson模块。 E.g。

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

这样就不会评估os.execvp()等“恶意”数据,但会抛出JSONDecodeError

答案 1 :(得分:2)

您可以使用literal_eval。真的取决于源 - 是说Python或JSON的源 - 它们有相同的表示形式有很多重叠

>>> from ast import literal_eval
>>> literal_eval('[200, "Hello", "World"]')
[200, 'Hello', 'World']