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

发布于 2024-11-25 04:02:12 字数 206 浏览 2 评论 0原文

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

[200, "Hello", "World"]

现在,由于这是一个文件,因此该数组位于一个字符串内;我使用 eval() 将其转换为数组。 这工作正常,但开头的整数被转换为 ascii 字符,而不是我想要的整数(欧元符号)。

我该如何解决这个问题?

I'm getting some data from a file, which looks like this:

[200, "Hello", "World"]

Now, since this is a file, this array is inside a string; I turn it into an array using eval().
This works fine BUT the integer at the start is converted to an ascii char, instead of an integer as I want it to (the euro sign).

How can I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晚雾 2024-12-02 04:02:12

您可以使用 simplejson 模块。例如,

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

这样,诸如 os.execvp() 之类的“恶意”数据将不会被评估,但会抛出 JSONDecodeError

You could use the simplejson module. E.g.

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

This way "malicious" data such as os.execvp() would not be evaluated but an JSONDecodeErrorwould be thrown.

笑看君怀她人 2024-12-02 04:02:12

您可以使用literal_eval。确实取决于源 - 源是使用 Python 还是 JSON - 有很多重叠,它们具有相同的表示形式

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

You can use literal_eval. Really depends on the source - is the source speaking Python or JSON - there is a lot of overlap where they have identical representations

>>> from ast import literal_eval
>>> literal_eval('[200, "Hello", "World"]')
[200, 'Hello', 'World']
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文