2013-09-16 1 views
-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 

ответ

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 так будет рассматриваться как строка