在Python,我想编写一个程序,它过滤从我的文本文件,该文件包含“苹果”,写这些行成一个新的文本文件中的行。我试过的只是在我的新文本文件中写下“苹果”一词,而我想要整行。我是一名Python初学者,请回复我的问题,因为我真的需要这个。的Python:从文本文件过滤线,包含特定单词
8
A
回答
16
使用可以得到包含使用列表理解“苹果”的所有行:
[ 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
if "apple" in line:
应该管用。
8
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))
5
使用生成器,这是内存高效,快速
def apple_finder(file):
for line in file:
if 'apple' in line:
yield line
source = open('forest','rb')
apples = apple_finder(source)
我爱无脑损伤简单的解决方案,用于读取:-)
+1
函数** apple_finder(文件)**是一个函数发生器,**苹果**是一个发生器。后者做同样的工作如**的IFilter(拉姆达行:“苹果”线,F)**在两行(包括进口) – eyquem 2011-03-09 12:39:12
相关问题
- 1. 具有特定单词的过滤器文本文件
- 2. 按特定顺序过滤包含一些字母的单词
- 3. C#文本文件搜索特定单词并删除包含该单词的整行文本
- 4. 从文本文件中删除包含特定文本的行
- 5. 过滤xml文件以删除其中包含特定文本的行吗?
- 6. stringr:包含特定单词
- 7. 从twitter获取包含特定单词的所有推文
- 8. 如何从包含某些字母的Python文本文件中删除单词?
- 9. 从包含特定单词在VB6
- 10. 使用python获取文本文件中的特定单词
- 11. 如何在Python中搜索特定单词的文本文件
- 12. 从文本文件,如何使两个数组包含单词
- 13. 列出所有包含特定单词的文件
- 14. 查找包含特定单词的文件 - SublimeText2
- 15. Python:当父级包含特定单词时,获取元素的文本
- 16. SQL服务器:只有行过滤包含特定文本
- 17. 通过批量删除文本文件中的特定单词
- 18. Python读取日志文件并获取包含特定单词的行
- 19. 如何在Procmail中过滤超链接中包含特定单词的邮件
- 20. 从文本中提取特定单词
- 21. 从python文本文件的一行中拉出特定的单词
- 22. 删除文件名中包含特定单词的所有文件
- 23. 过滤词和数字文本文件
- 24. 如何从Python中的文本中获取特定单词?
- 25. python阅读文本文件并找到包含两个特定单词的段落
- 26. 通过特定路线包装文件
- 27. 摆脱文本文件中包含特殊字符的所有单词
- 28. 从文本文件中计算特定单词 - Java
- 29. 如何根据文本文件中的特定单词过滤特定值并将其存储在列表中?
- 30. 卸下包含特定单词CSV行特定的词
列表解析创建一个对象。使用生成器表达式会更好。顺便说一下,它可以写成'''writelines'(line for line in open('textfile')if'apple'in line)' – eyquem 2011-03-09 12:03:56
@eyquem:好吧,我完全同意 - 对于大文件 - 它应该是更好的使用发电机,因为发电机懒洋洋的行为,从而犯规消耗那么多的内存。但是对于小文件来说,列表理解是更快的解决方案? – phynfo 2011-03-09 12:23:53
@Phynfo:没......让事情作为发电机/迭代器效率高得多。该列表理解仍然是创建迭代器,然后将其填充列表,一旦完全通过该列表writelines该把它放回迭代器。 – 2015-11-04 00:46:16