gpt4 book ai didi

python - 使用文件匹配括号

转载 作者:太空宇宙 更新时间:2023-11-03 20:42:45 25 4
gpt4 key购买 nike

我试图匹配文件中一行的括号,但是当我使用下面的代码而不从文件获取数据并输入它时,它可以工作并匹配括号。我不知道如何让它与数字和字母一起工作。

我尝试了很多不同的方法,但到目前为止这是最好的。我认为首先我打印的内容有问题,但我已经尝试了我所知道的一切来解决这个问题。我也是 python 新手,所以它可能不是最好的代码。

class Stack:
def __init__(self):
self._items = []

def isEmpty(self):
return self._items == []

def push(self,item):
self._items.append(item)

def pop(self):
return self._items.pop()

stack = Stack()

open_list = ["[","{","("]
close_list = ["]","}",")"]

def open_file():
file = open("testing.txt","r")
testline = file.readline()
count = 1
while testline != "":
testline = testline[:-1]
check(testline,count)
testline = file.readline()
count = count + 1


def check(testline,count):
stack = []
for i in testline:
if i in open_list:
stack.append(i)
elif i in close_list:
pos = close_list.index(i)
if ((len(stack) > 0) and
(open_list[pos] == stack[len(stack)-1])):
stack.pop()
else:
print ("Unbalanced")
print (count)
if len(stack) == 0:
print ("Balanced")
print (count)


def main():
open_file()

if __name__=="__main__":
main()

输出:

如果文件包含

dsf(hkhk[khh])

ea{jhkjh[}}

hksh[{(]

sd{hkh{hkhk[hkh]}}]

输出为

Balanced
1
Unbalanced
2
Unbalanced
2
Unbalanced
3
Unbalanced
4
Balanced
4

前四个是正确的,但它增加了 2,我不知道它来自哪里。当我打印时,我需要计数以供以后使用(即第 1 行是平衡的)

最佳答案

是时候学习调试基础了...

@emilanov 已经给出了 open_file 函数的提示,因此我将重点关注 check 函数。

for i in range (0,len(testline),1):

可能不是您想要的:i 将采用从 0len(teSTLine) -1 的整数值。规则是:当出现问题时,使用调试器或添加跟踪打印。在这里

for i in range (0,len(testline),1): 
print(i) # trace - comment out for production code

会让问题变得明显。

你想要的可能是:

for i in testline: 

关于python - 使用文件匹配括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56767997/

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