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, '')
希望对你有所帮助。
我有我的输入字符串列表,我需要在其中传递任何左大括号的索引并期望我的 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, '')
希望对你有所帮助。