将不会打印出查询的行号

问题描述 投票:0回答:1

我在一个文件夹中有两个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

以及在querys.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 []

我该如何解决

python search text-files
1个回答
0
投票

读取文件时遇到一些问题。通过使用for循环遍历文件,您可以尾随换行符,并且在遍历文件一次之后,文件光标位于文件末尾。因此,我建议您先阅读文件,然后将其分成几行。

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_numberquery

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)
© www.soinside.com 2019 - 2024. All rights reserved.