python:使用要在txt文件上搜索的关键字列表

时间:2016-12-27 08:38:17

标签: python search

我是python的新手,我正在尝试使用其他txt文件中的关键字搜索txt文件。 到目前为止,我的代码看起来像这样:

testfile=open('D:\\Coding\\testfile.txt')
keywordfile=open('D:\\Coding\\keyword.txt')

testfile.seek(0,0)
keywordfile.seek(0,0)
for keyword in keywordfile:
    print('\n****************\nlooking for: ', keyword)
    testfile.seek(0,0)
    for line in testfile:
            if keyword in line:
                print('keyword: ', keyword)
                print('line: ', line)

keyword.txt包含以下内容:

quick
fox
jumps

testfile.txt包含以下内容:

the quick 
brown fox jumps 
over the lazy dog
near the river banks

它应该在tesfile.txt中找到每个关键字并打印出来,但是当我运行上面的代码时,我会得到以下结果:

****************
looking for:  quick


****************
looking for:  fox


****************
looking for:  jumps
keyword:  jumps
line:  brown fox jumps 

它找不到前两个关键字,而只找到最后一个关键字。

我有一种感觉,这可能只是我的一个简单错误,但我非常感谢你的帮助澄清我错在哪里。

谢谢!

4 个答案:

答案 0 :(得分:0)

我认为在阅读关键字时遇到问题,它最后也可能包含\ n或\ t或\ r \ n字符或空格('')。你怎么用string.replace来消除这种可能性:

 if keyword.replace(' ','').replace('\n','') in line:

或者您也可以在python中使用string.strip():

if keyword.strip(' \t\n\r') in line:

答案 1 :(得分:0)

首先,我建议您一次读取文件并将其保存在内存中,这样您就不必每次都重新读取它们。您可以使用Python的with语句,因此您不必在处理后关闭它们。

with open("testfile.txt", "r") as f:
    testfile = f.readlines()

with open("keywords.txt", "r") as f: 
    keywords = f.readlines() 

然后,代码中的错误是文件中的行可能包含换行符\n或空格' '。 Python有一个方便的功能来解决这个问题:strip()。这是循环代码:

for keyword in keywords:             
    kw = keyword.strip()     
    print('\n***********\nlooking for: ', kw)
    for line in testfile:
        if kw in line:
            print('keyword: ', kw)
            print('line: ', line)

答案 2 :(得分:0)

从头脑中想到这个

lines1 = testfile.readlines()
lines2 = keywordfile.readlineS()

searchList = []

for line in line2:
    lineSplit = line.split(" ")
    for item in lineSplit:
        searchList.append(item)

for item in searchList:
    for line in line1:
        if item in line:
            print(line)

答案 3 :(得分:0)

您可以这样做:

Keyword: 'quick' found on line: 0
Keyword: 'fox' found on line: 1
Keyword: 'jumps' found on line: 1

输出:

{{1}}