Python:检查字符串中的字符

时间:2014-04-13 00:01:41

标签: python-3.x

所以我一直在尝试做这项工作,但我不知道哪里出错了。文本文件包含:

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"因为文件中的所有字符都在列表中;但它只是在没有打印声明的情况下退出。

1 个答案:

答案 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'