如何将包含namedtuple的列表的字符串表示形式转换为普通列表

时间:2019-09-05 13:21:09

标签: python-3.x string list

我正在尝试将包含namedtuple的列表的字符串表示形式转换为普通列表。

尝试过eval_literal,json.loads和split。

ast.literal_eval错误

ValueError: malformed node or string: <_ast.Call object at 0x7f834bef5860>

在字符串中添加双引号

SyntaxError: invalid syntax

json.loads()错误

json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)

拆分问题是它正在转换命名元组内容的数据类型。

请建议我可能的解决方法。 输入:

'[milestone(id=1, amount=1000, curency='inr'), milestone(id=1, amount=1000, curency='inr')]'
type<str>

预期输出:

[milestone(id=1, amount=1000, curency='inr'), milestone(id=1, amount=1000, curency='inr')]
type<list>

1 个答案:

答案 0 :(得分:0)

这似乎是eval()的工作(关于eval的StackOverflow线程):

from collections import namedtuple

str = "[milestone(id=1, amount=1000, currency='inr'), milestone(id=1, amount=1000, currency='inr')]"

milestone = namedtuple('milestone', 'id amount currency')
list = eval(str)
print(list)

Try it online!

顺便说一句,两个r货币;)