尝试分析字符串并将其转换为嵌套列表

2024-04-26 13:57:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python和blocking这个问题还不熟悉:

试着从这样的字符串开始:
mystring='[[10,20],[20,50],[0400],[50,328],[22,32]],30,12]'

到由字符串表示的嵌套列表。基本上,与 str(mylist)

如果我尝试显而易见的选择
列表(mystring)

它将每个字符分割成不同的元素,我就失去了嵌套。你知道吗

列表或str类型是否有我在文档中遗漏的属性(我使用python3.3)?或者我需要编写一个函数来实现这一点?你知道吗

另外,您将如何实现该功能?我不知道创建任意深度的嵌套列表需要什么。。。你知道吗

谢谢你

——路易斯H


Tags: 函数字符串文档功能元素类型列表属性
2条回答

或者,如果您希望实现从字符串到对象的更一般的转换,我建议使用json模块。使用字典,并返回一个经过验证的、真实的规范,可以在整个开发人员和web空间中使用。你知道吗

import json
nested_list = json.reads(mystring)
# You can even go the other way
mystring == json.dumps(nested_list)
>>> True

此外,还有一些方便的方法可以直接处理包含这种字符串表示形式的文件:

# Instead of
data_structure = json.loads(open(filename).read())
# Just
data_structure = json.load(filename)

与之相反的是dump而不是load

如果您想知道为什么应该使用json而不是评估(),这是一个非常确定的观点,您应该阅读this问题。你知道吗

对字符串调用ast.literal_eval函数。你知道吗

为了自己实现它,可以使用递归函数将字符串转换成表示列表的字符串列表。然后这些字符串将被传递给函数,以此类推。你知道吗

If I try the obvious solution list(mystring) it separates each character into a different element and I lose the nesting.

这是因为list()实际上从iterable生成一个列表,该列表使用字符串的__iter__()方法list()转换为迭代器。当字符串转换为迭代器时,将生成每个字符。你知道吗

相关问题 更多 >