不会打印出查询的行号



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

和在queries.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 []

如何解决此

读取文件时存在一些问题。通过使用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")

现在您可以处理查询了。在处理新的query之前,请记住重置当前的relevantline_number

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)

最新更新