「Apple」という単語を含むテキストファイルの行をフィルタリングして、それらの行を新しいテキストファイルに書き込むプログラムを作成したいと思います。
私が試したのは、新しいテキストファイルに「Apple」という単語を書き込むだけですが、行全体が必要です。
リスト内包表記を使用すると、「Apple」を含むすべての行を取得できます。
[ line for line in open('textfile') if 'Apple' in line]
したがって、1つのコード行でも新しいテキストファイルを作成できます。
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)
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))
ジェネレータを使用すると、これはメモリ効率が高く高速です
def Apple_Finder(file):
for line in file:
if 'Apple' in line:
yield line
source = open('forest','rb')
apples = Apple_Finder(source)
私は読書のための脳の損傷のない簡単な解決策が大好きです:-)
Pythonの場合-これは動作している高速な例です
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))
if "Apple" in line:
は機能するはずです。