Python-如何编写不同数量的“ if(条件)或if(条件)”?

Use*_*828 0 python parsing if-statement list

我试图在Python中创建一个解析器,该解析器遍历多个文件,搜索给定的单词,并返回包含该字符串的所有行。

我正在使用的方法是从包含搜索到的单词的文档中多次复制同一行,如果该行包含用户尝试搜索的多个单词。

我当前使用的搜索方法是:

for line in range(0,length_of_documents):
    for word in range(0,words):
        if words[word] in document[line]:
            print(document[line])
Run Code Online (Sandbox Code Playgroud)

为了克服这个问题,我需要编写如下内容:

for line in range(0,length_of_documents):
    for word in range(0,words):
        if words[0] in document[line] or if words[1] in document[line] or if words[2] in document[line]:
            print(document[line])
Run Code Online (Sandbox Code Playgroud)

但是我不知道用户可以为搜索字符串输入多少个单词。有什么可能的解决方案?

我使用过eval()函数,该函数会在运行时动态生成的字符串中传递“如果document [line]中的words [0]或document [line]中的word [1]或........”,但这不起作用。我在'if'处收到语法错误。

che*_*ner 5

if 介绍整个语句,而不是每个单独的条件。

if words[0] in document[line] or words[1] in document[line] or words[2] in document[line]:
    print(document[line])
Run Code Online (Sandbox Code Playgroud)

这可以更简明地写,特别是因为你要遍历所有的words使用any功能。

if any(x in document[line] for x in words):
    print(document[line])
Run Code Online (Sandbox Code Playgroud)

看起来您只是想遍历的每个元素document,而对索引没有特别的兴趣。

for line in document:
    if any(x in line for x in words):
        print(line)
Run Code Online (Sandbox Code Playgroud)