在字符串中查找匹配的开始/结束大括号索引

2024-06-16 11:29:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要字符串的for循环中相应大括号的索引,例如:"(foo(bar))"

起初我是这样做的,但它总是匹配最右边/最左边的大括号,因此它不能与多个大括号一起工作:

for item in string:
    if item == "(":
        matchingbraceindex = string.find(")", item)

    elif item == ")":
        matchingbraceindex = string.rfind("(", 0, item)

然后我想数一数大括号,但我仍然没有得到索引,只是在其他大括号中的位置,我想不出从中提取索引的方法


Tags: 方法字符串inforstringiffoobar
3条回答
indexes_of_opening_brackets = []
indexes_of_closing_brackets = []

for index, item in enumerate(string):
    if item == "(":
        indexes_of_opening_brackets.append(index)
    elif item == ")":
        indexes_of_closing_brackets.append(index)

我没有尝试代码,但我认为它会起作用

使用堆栈。按左键,直到遇到右键,此时您已找到最里面的一对。你的问题不清楚你在寻找什么输出,所以我不能说如何处理这些字母

试试这个,如果我正确理解你的问题,这就是你想要的。 在这里,我在搜索字符串中的“(”和“)”之后,在字典中添加值

string = "(foo(bar))"

print(string.find(")"))
num = string.count(")")
a = 0
b = 0
dict_ = {"open": [], "close": []}
a = string.find("(", a)
dict_["open"].append(a)

for _ in range(0, num):
    a = string.find("(", a+1)
    dict_["open"].append(a)
    b = string.find(")", b+1)
    dict_["close"].append(b)

dict_["open"].pop(-1)
print(dict_)

相关问题 更多 >