Sat*_*ung 3 lisp python pyparsing
我试图将lisp输入解析为python列表.但是当我解析输入时,我得到了字符串列表,但我希望将单个元素作为int.
示例:当我解析以下输入时:"(2 (10 (5 11))) (5 6) (4)"
输出:[[['2'], ['10', '5']], [['5'], ['6']], [['4']]]
我使用:[[map(int, x) for x in lst] for lst in test]转换字符串,int但此函数只解析2级嵌套列表.但如果我有一个超过2的嵌套列表,我应该如何使用它来解析?
我试过pyparsing但我没理解它.
def as_int(xs):
if isinstance(xs, list):
return map(as_int, xs)
elif isinstance(xs, str):
return int(xs)
return xs
Run Code Online (Sandbox Code Playgroud)
用法:
>>> xs = [[['2'], ['10', '5']], [['5'], ['6']], [['4']]]
>>> print as_int(xs)
[[[2], [10, 5]], [[5], [6]], [[4]]]
Run Code Online (Sandbox Code Playgroud)