如何将表示嵌套列表的字符串解析为实际列表?

发布于 2024-08-15 12:15:21 字数 212 浏览 4 评论 0原文

假设我有一个代表一些嵌套列表的字符串,我想将其转换为真实的东西。我认为我可以这样做:

exec "myList = ['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']"

但是在用户可能提供字符串来执行的环境中,这可能/将是一个坏主意。有人对一个可以完成同样事情的整洁解析器有什么想法吗?

Say I have a string representing some nested lists and I want to convert it into the real thing. I could do this, I think:

exec "myList = ['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']"

But in an environment where users might be supplying the string to execute this could/would be a bad idea. Does anybody have any ideas for a tidy parser that would accomplish the same thing?

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

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

发布评论

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

评论(1

白云不回头 2024-08-22 12:15:21
>>> import ast
>>> mylist = ast.literal_eval("['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']")
>>> mylist
['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']

ast.literal_eval

安全地评估表达式节点或
包含 Python 的字符串
表达。字符串或节点
提供的可能仅包含
以下 Python 文字结构:
字符串、数字、元组、列表、
字典、布尔值和无。

这可用于安全评估
包含 Python 表达式的字符串
来自不受信任的来源,未经
需要自己解析这些值。

>>> import ast
>>> mylist = ast.literal_eval("['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']")
>>> mylist
['foo', ['cat', ['ant', 'bee'], 'dog'], 'bar', 'baz']

ast.literal_eval:

Safely evaluate an expression node or
a string containing a Python
expression. The string or node
provided may only consist of the
following Python literal structures:
strings, numbers, tuples, lists,
dicts, booleans, and None.

This can be used for safely evaluating
strings containing Python expressions
from untrusted sources without the
need to parse the values oneself.

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