Я пытаюсь написать программу на Python, которая принимает строку и проверяет, все ли разделители были сопоставлены и закрыты.
Я нашел эту программу, которая делает это, но, к сожалению, она не работает для строковых кавычек. К сожалению, я не совсем понимаю, как работает программа, поэтому я не могу это исправить. Может кто-нибудь сказать мне, как изменить программу для работы с разделителями строк ('и ").
Текущий код, который у меня есть:
delimOpens = ['[', ']', '(', ')', '{', '}', '"', "'"]
delimCloseToOpen = {']':'[', ')':'(', '}':'{', '"':'"', "'":"'"}
def check_match(source):
delimStack = ['sentinel']
for c in source:
if c in delimOpens:
delimStack.append(c)
elif c in delimCloseToOpen:
if delimCloseToOpen[c] != delimStack.pop():
return False
return (len(delimStack) == 1)
if __name__ == "__main__":
print(check_match('{(abc)22}[14(xyz)2]'))
print(check_match('[ { ] }'))
print(check_match('{ (x) } ['))
print(check_match('This is "hello" world'))
print(check_match('This is "hello world'))
Проблема в том, что код возвращает false для правильной строки:
print(check_match('This is "hello" world'))