l'analyse des parenthèses imbriquées dans python, récupérez le contenu par niveau

Apparemment ce problème arrive assez souvent, après la lecture de

Expression régulière pour détecter semi-colon C++ terminée pour & tandis que les boucles

et la réflexion sur le problème pendant un certain temps, j'ai écrit une fonction pour renvoyer le contenu à l'intérieur d'un nombre arbitraire de imbriquée ()

La fonction pourrait facilement être étendu à toute expression régulière de l'objet, de poster ici pour vos pensées et considérations.

tout refactoring conseils seraient appréciés

(remarque, je suis nouveau sur python encore, et n'avait pas envie de chercher comment lever des exceptions ou que ce soit, donc j'ai juste eu le retour de la fonction "erreur" si on couldin pas comprendre ce qui se passait)

Modifié pour prendre en compte les commentaires:

def ParseNestedParen(string, level):
    """
    Return string contained in nested (), indexing i = level
    """
    CountLeft = len(re.findall("\(", string))
    CountRight = len(re.findall("\)", string))
    if CountLeft == CountRight:
        LeftRightIndex = [x for x in zip(
        [Left.start()+1 for Left in re.finditer('\(', string)], 
        reversed([Right.start() for Right in re.finditer('\)', string)]))]

    elif CountLeft > CountRight:
        return ParseNestedParen(string + ')', level)

    elif CountLeft < CountRight:
        return ParseNestedParen('(' + string, level)

    return string[LeftRightIndex[level][0]:LeftRightIndex[level][1]]

source d'informationauteur justin cress