您好我正在尝试获取嵌套在其中的其他列表。 这是我的字符串:
'"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
答案 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']
注意 true
,false
和null
不是有效的Python标识符,因此会被视为字符串