Python - 只有匹配括号

时间:2018-04-07 16:05:16

标签: python substring string-parsing s-expression longest-substring

为了交互式解析,给定一个输入字符串,我需要提取从索引0开始并且只有匹配括号的最长子字符串。

示例(类似LISP的s表达式)

输入字符串:(print "hello") (assign a (+ c d)) (assign e (+ f g)

输出子字符串:(print "hello") (assign a (+ c d))

我想制作一个简单的Python函数来实现这一目标。

1 个答案:

答案 0 :(得分:1)

在计算括号时循环遍历字符串,最后只是将字符串切片到括号计数器为0的最后一个索引:

def max_parseable_substring(text):
    parentheses = 0
    end = 0

    for i, char in enumerate(text):
        if char == "(":
            parentheses += 1
        elif char == ")":
            parentheses -= 1

        if parentheses == 0:
            end = i

    return text[:end]