在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