1

我试图让我的程序查看“单词”中的 3 个单词之一是否出现在精细的 kal.txt 中,只是其中一个单词出现在我们身上就足够了,但我似乎无法让它工作。

我的代码:

    textring = open('kal.txt', 'r')

    words  =['flapping', 'Unexpected', 'down']
    len_words = len(words)
    print(len_words)

    counter = 0

    while counter < len_words:
        if words[counter] in textring: 
            print('success')
            SAVE_FILE = open('warnings/SW_WARNING.txt', 'w+')
            SAVE_FILE.write(textring)

        counter += 1

这是我在 cmd 中得到的输出:

    3

那当然是因为它打印的是 3 的 len_words。

有什么建议为什么,或者有人有解决方案吗?

4

1 回答 1

1

首先我们读取文件内容。然后我们遍历每个单词并检查它是否在文本中。如果是,我们写我们的信息并离开循环。

with open('kal.txt', 'r') as infile:
    text = infile.read()

words = ['flapping', 'Unexpected', 'down']
for word in words:
    if word in text:
        print('success')
        with open('warnings/SW_WARNING.txt', 'w+') as save_file:
            save_file.write(text)
        break

请注意with上下文管理器的使用。当您使用withwith时open,无需在工作完成后关闭文件 - 这是您在程序中忘记执行的任务。

附加说明:列表是可迭代的。无需使用计数器并使用索引访问元素。使用索引更慢,更难阅读,因此它被认为是“unpythonic”。只需遍历值本身。

于 2019-12-02T12:03:53.903 回答