Python:从文本文件中过滤包含特定单词的行

时间:2011-03-09 11:22:16

标签: python filter line

在Python中,我想编写一个程序,用于过滤包含单词“apple”的文本文件中的行,并将这些行写入新的文本文件中。我试过的只是在我的新文本文件中写了“apple”这个词,而我想要整行。我是Python的初学者,所以请回答我的问题,因为我真的需要这个。

5 个答案:

答案 0 :(得分:20)

使用可以使用list-comprehension获取包含'apple'的所有行:

[ line for line in open('textfile') if 'apple' in line]

所以 - 也可以在一个代码行中 - 创建新的文本文件:

open('newfile','w').writelines([ line for line in open('textfile') if 'apple' in line])

eyquem是对的:将它保持为迭代器并写入它肯定更快

open('newfile','w').writelines(line for line in open('textfile') if 'apple' in line)

答案 1 :(得分:10)

from itertools import ifilter

with open('source.txt','rb') as f,open('new.txt','wb') as g:

    g.writelines( ifilter(lambda line: 'apple' in line, f))

答案 2 :(得分:7)

使用生成器,这是内存高效且快速的

def apple_finder(file):
    for line in file:
        if 'apple' in line:
             yield line


source = open('forest','rb')

apples = apple_finder(source)

我喜欢简单的解决方案,没有脑损伤阅读: - )

答案 3 :(得分:1)

if "apple" in line:应该有用。

答案 4 :(得分:0)

对于 Python3 -这是可行且快速的示例

with open('input.txt', 'rb') as file_in:
    with open("output.txt", "wb") as file_out:
        file_out.writelines(filter(lambda line: b'lines with this text' in line, file_in))