我想从一个文件中选取单词,然后使用python将其grep到另一个文件中。代码看起来像
f1 = open("file1.txt",'r')
f2 = open("file2.txt",'r')
def find_word(str, fp):
for line in fp:
if line == str:
print (line)
for word in f1:
find_word(word, f2)
虽然我确定file2.txt中存在某些单词,但未打印任何内容。这段代码有什么问题?
答案 0 :(得分:1)
检查功能find_word
:
def find_word(str, fp):
for line in fp:
if line == str:
print (line)
这会遍历fp
给定的文件中的每一行(或任何可迭代的事情)。除非字符串str
与文件中的一行完全匹配(包括换行符,如果适用),否则您的函数将不会输出任何内容。您可能要检查它是否在该行中,而用
def find_word(str, fp):
for line in fp:
if str in line:
print (line)
甚至更好,因为str
是内置类
def find_word(query, fp):
for line in fp:
if query in line:
print (line)
您可能还想从{p}中的word
中删除换行符
for word in f1:
find_word(word, f2)
所以它看起来可能像
for word in f1:
find_word(word.rstrip('\r\n'), f2)
答案 1 :(得分:1)
您第一次搜索单词时就消耗了整个输入文件。后续搜索将失败,因为for line in file
将不返回任何内容。
如果您要在一行中搜索单词,这也将失败,因为您阅读的行中包含终止换行符;所以
if 'word\n' in line:
如果word
不在行尾附近,则找不到。