所以我一直在尝试做这项工作,但我不知道哪里出错了。文本文件包含:
III
@@@
这是我到目前为止所拥有的。我看不出有什么问题。
CHARACTERS = ["I","@"]
def checkFile():
inFile = open("random.txt","r")
text = inFile.read()
inFile.close()
x = True
for line in text:
line.strip()
for i in range(len(line)):
if line[i] in CHARACTERS:
x = True
else:
x = False
return False
return True
def main():
check = checkFile()
if check == False:
sys.exit()
elif check == True:
print("bye")
sys.exit()
main()
它应该打印" bye"因为文件中的所有字符都在列表中;但它只是在没有打印声明的情况下退出。
答案 0 :(得分:0)
当txt
文件包含两行文字时,一行相互叠加,它还包含一个隐藏的'\n'
。要更改,请将'\n'
添加到CHARACTERS
,或复制以下代码:
CHARACTERS = ["I","@", "\n"]
def checkFile():
inFile = open("random.txt","r")
text = inFile.read()
inFile.close()
x = True
for line in text:
line.strip()
for i in range(len(line)):
if line[i] in CHARACTERS:
x = True
else:
x = False
return False
return True
def main():
check = checkFile()
if check == False:
sys.exit()
elif check == True:
print("bye")
sys.exit()
main()
编辑:我创建了一个名为txt
的{{1}}文件,并将您的文字粘贴到其中。然后我运行了以下代码:
test.txt
因为它们之间有两条线,所以它有teo >>> file = open('test.txt', 'r').read()
>>> file
'III\n\n@@@\n'
>>>
s。您可以通过将'\n'
添加到'\n'
,或通过使用CHARACTERS
调用text = inFile.read().split()
来解决此问题
当您致电split()
时,您未将line.strip()
分配给任何值。因此,line.strip()
仍然是“未被剥夺的”,可以这么说。相反,请致电'\n'
。