-1

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

'"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
4

1 回答 1

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']

注意 true和不是有效的 Python 标识符falsenull因此将被视为字符串

于 2013-09-16T17:40:37.247 回答