Python - Как написать различное число «если (условие) или если (условие)»? - PullRequest
0 голосов
/ 31 марта 2019

Я пытался создать синтаксический анализатор в Python, который просматривает несколько файлов, ищет заданные слова и возвращает все строки, содержащие эту строку.

Метод, который я использую, создает одну и ту же строку издокумент, содержащий искомое слово, печатается несколько раз, если эта строка содержит несколько слов, которые пытается найти пользователь.

Используемый в настоящее время метод поиска:

for line in range(0,length_of_documents):
    for word in range(0,words):
        if words[word] in document[line]:
            print(document[line])

Чтобы преодолеть этоМне нужно написать что-то вроде:

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])

Но я не знаю, сколько слов пользователь может ввести для строки поиска.Какое возможное решение для этого?

Я использовал функцию eval (), которая передается в строке динамически генерируется, если слова [0] в документе [строка] или если слова [1] в документе [строка] или ........ 'во время выполнения, но это не работает.Я получаю синтаксическую ошибку при 'if'.

1 Ответ

5 голосов
/ 31 марта 2019

if представляет весь оператор, а не каждое отдельное условие.

if words[0] in document[line] or words[1] in document[line] or words[2] in document[line]:
    print(document[line])

Это можно записать более кратко, особенно если вы хотите перебрать all из wordsс использованием функции any.

if any(x in document[line] for x in words):
    print(document[line])

Выглядит так, как будто вы просто хотите перебирать каждый элемент document без особого интереса к индексу.

for line in document:
    if any(x in line for x in words):
        print(line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...