我是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
它找不到前两个关键字,而只找到最后一个关键字。
我有一种感觉,这可能只是我的一个简单错误,但我非常感谢你的帮助澄清我错在哪里。
谢谢!
答案 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}}