解析Lisp输入到python的问题

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但我没理解它.

fal*_*tru 5

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)