Python eval 字符串中的整数,返回整数而不是 ASCII 字符
我从一个文件里获取了一些数据,内容大概是这样的:
[200, "Hello", "World"]
现在,因为这是一个文件,所以这个数组实际上是放在一个字符串里的;我用 eval()
把它变成了一个数组。这方法没问题,但开头的整数被转换成了一个 ASCII 字符,而我其实想要的是一个整数(欧元符号)。
我该怎么解决这个问题呢?
2 个回答
2
你可以使用 literal_eval
。这主要取决于你的数据来源——这个来源是用Python语言写的,还是用JSON格式的?这两者之间有很多相似之处,它们的表示方式是一样的。
>>> from ast import literal_eval
>>> literal_eval('[200, "Hello", "World"]')
[200, 'Hello', 'World']
2
你可以使用 simplejson 这个模块。比如说:
>>> import simplejson
>>> a = simplejson.loads('[200, "Hello", "World"]')
>>> print a
[200, 'Hello', 'World']
这样的话,像 os.execvp()
这种“恶意”的数据就不会被执行,而是会抛出一个 JSONDecodeError
错误。