Python eval 字符串中的整数,返回整数而不是 ASCII 字符

1 投票
2 回答
1262 浏览
提问于 2025-04-16 21:58

我从一个文件里获取了一些数据,内容大概是这样的:

[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 错误。

撰写回答