Не будет печатать номер строки запроса - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть два txt-файла в папке: документы и запросы. В файле docs.txt обратите внимание, что строки разделяются:

joyously urgently truthfully seemingly broadly urgently relatively upwardly vaguely hardly rudely acidly knowingly urgently joyously urgently truthfully seemingly rigidly simply dramatically totally broadly rigidly suddenly healthily commonly often tremendously more sharply totally steadily righteously rarely

и в query.txt: urgently rigidly suddenly totally steadily

и у меня есть этот python код:

relevant = []
def main():
    searchandvalue()


def searchandvalue():
    line_number=0
    searchquery= open('queries.txt', 'r')
    with open('docs.txt', 'r') as open1a:
        for query in searchquery:
            print('query word: ', query)
            for word in open1a:
                line_number+=1
                if query in word:
                    relevant.append(line_number)

            print('relevant', relevant)


if __name__ == "__main__":
    main()

То, что должно быть выведено, это:

query word:  urgently

relevant [1, 2]
query word:  rigidly suddenly

relevant [2]
query word:  totally steadily
relevant [3]

Вместо этого у меня есть это: То, что должно выводить это:

query word:  urgently

relevant []
query word:  rigidly suddenly

relevant []
query word:  totally steadily
relevant []

Как мне решить эту проблему

1 Ответ

0 голосов
/ 17 апреля 2020

Есть несколько проблем с чтением ваших файлов. Итерируя по вашему файлу с помощью для l oop, вы получаете завершающие символы новой строки, и курсор файла находится в конце файла после итерации по файлу один раз. Вот почему я предлагаю вам сначала прочитать ваши файлы и разбить их на строки.

with open("queries.txt", "r") as open_queries:
    # read from file and split into a list of lines
    searchquery = open_queries.read().split("\n")

with open('docs.txt', 'r') as open1a:
    # read from file and split into a list of lines
    words = open1a.read().split("\n")

Теперь вы можете обрабатывать запросы. Не забудьте сбросить текущие значения relevant и line_number перед обработкой нового query.

for query in searchquery:
    print('query word:', query)
    # reset relevant list and line_number 
    relevant = []
    line_number = 0
    for word in words:
        line_number += 1
        if query in word:
            relevant.append(line_number)
    print('relevant', relevant)
...