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