python 从列表中获取结束大括号索引的代码

python code to get ending brace index from list

我有我的输入字符串列表,我需要在其中传递任何左大括号的索引并期望我的 python 函数到 return 其相应的右大括号的索引及其值。

输入列表:

mylist=[
'a',
'b(',
'(',
'cd',
'd(e)',
'hi)',
'last brace) '
]

我需要获取列表的索引和字符串

getindex=func(mylist[2])

getindex 应该有 hi) 和索引 5。它应该忽略 ex: d(e)last brace) 等之间的任何相应的平衡括号

getindex=(5,'hi)')

我是 python 的新手,非常感谢您花时间帮助 me.Thanks!

只需要从起始行开始计算左大括号,遇到左大括号就增加,遇到右大括号就减少。当它再次达到零时,您会找到正确的索引。

您的示例代码:

def get_closing_brace_index(str_list, left_idx):
    # input check, you can ignore it if you assure valid input
    if left_idx < 0 or left_idx >= len(str_list) or '(' not in str_list[left_idx]:
        return -1, ''

    # use a left brace counter
    left_count = 0
    # just ignore everything before open_brace_index
    for i, s in enumerate(str_list[left_idx:]):
        for c in s:
            if c == '(':
                left_count += 1
            elif c == ')':
                left_count -= 1
                # find matched closing brace
                if left_count == 0:
                    return i + left_idx, str_list[i + left_idx]
                # invalid brace match
                elif left_count < 0:
                    return -1, ''
    return -1, ''

def test():
    mylist = [
        'a',
        'b(',
        '(',
        'cd',
        'd(e)',
        'hi)',
        'last brace) '
    ]

    print(get_closing_brace_index(mylist, 1))
    # output (6, 'last brace) ')
    print(get_closing_brace_index(mylist, 2))
    # output (5, 'hi)')
    print(get_closing_brace_index(mylist, 4))
    # output (4, 'd(e)')
    print(get_closing_brace_index(mylist, 0))
    # output (-1, '')
    print(get_closing_brace_index(mylist, 6))
    # output (-1, '')

希望对你有所帮助。