来自字符串的嵌套列表,用空格和括号分隔

时间:2013-09-16 17:26:24

标签: python list nested-lists

您好我正在尝试获取嵌套在其中的其他列表。 这是我的字符串:

'"Title" "Title  of  an  article,  chapter,  etc." ("The Divine Comedy" "Rules of Construction") true null null false'

这是我想要实现的结果:

['Title', 'Title of an article, chapter, etc.', ['The Divine Comedy', 'Rules of Construction'], true, null, null, false] 

我目前正在使用`shlex,但没有成功:

def metadata():
    md = shlex.split(content)
    print md

1 个答案:

答案 0 :(得分:0)

re.findall的递归调用可能会起作用。你需要明智地选择你的正则表达式

>>> st = '"Title" "Title  of  an  article,  chapter,  etc." ("The Divine Comedy" "Rules of Construction") true null null false'
>>> def nest_split(st):
    return [nest_split(e[1:-1]) if e.startswith('(') else e.strip('"') for e in re.findall("\(.*?\)|\".*?\"|\w+", st)]

>>> nest_split(st)
['Title', 'Title  of  an  article,  chapter,  etc.', ['The Divine Comedy', 'Rules of Construction'], 'true', 'null', 'null', 'false']

注意 truefalsenull不是有效的Python标识符,因此会被视为字符串