从一个文件中读取单词并将其grep到另一个文件中

时间:2019-12-27 21:14:50

标签: python

我想从一个文件中选取单词,然后使用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中存在某些单词,但未打印任何内容。这段代码有什么问题?

2 个答案:

答案 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不在行尾附近,则找不到。