gpt4 book ai didi

python - 在Python中解析文本并返回不匹配括号的列表

转载 作者:行者123 更新时间:2023-12-01 09:09:03 25 4
gpt4 key购买 nike

我需要解析一些文本并确定哪些括号未闭合,并返回将闭合它们的括号列表,例如

如果这是输入的字符串:

({([])

然后该函数应该返回一个括号列表来关闭未匹配的集合:

['}', ')']

基本上关闭了不匹配的集合。

这是我目前拥有的代码:

def evaluate(str):
stack = []
missing = []
pushChars, popChars = "({[", ")}]"
for c in str:
if c in popChars:
matching = pushChars[popChars.index(c)]
if not len(stack) or stack[len(stack) - 1] != matching:
missing.append(c)
else:
stack.pop()
continue
if c in pushChars:
stack.append(c)
return missing

最佳答案

您可以创建一个类来解析文本对,如果未找到结束值,则可以将无效字符附加到未结束的字符列表中:

class Parse:
def __init__(self, _str, _to_find = None):
self.brackets = _str
self.converter = {'(':')', '[':']', '{':'}', ')':'(', ']':'[', '}':'{'}
self.search_for = _to_find
self.flagged = []
self.parse()
def parse(self):
_current = next(self.brackets, None)
if _current is None and self.search_for is not None:
self.flagged.append(self.search_for)
elif _current is not None:
if _current != self.search_for:
_result = Parse(self.brackets, self.converter[_current])
self.flagged.extend(_result.flagged)
self.brackets = _result.brackets
self.parse()


p = Parse(iter('({([])'))
print(p.flagged)

输出:

['}', ')']

但是请注意,如果找到了有效序列,标记 将是一个空列表 ([]):

p = Parse(iter('{{()}}'))
print(p.flagged)

输出:

[]

关于python - 在Python中解析文本并返回不匹配括号的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51814158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com