ファイル全体をループしたい場合、賢明なことは、行を取得して単語に分割して、それを反復処理することです。最初にファイル全体をメモリに読み込まないことを意味するため、行ごとに作業するのが最適です (大きなファイルの場合、多くの時間がかかるか、メモリ不足になる可能性があります)。
with open('in.txt') as input:
for line in input:
for word in line.split():
...
余分な空白をすべて削除するためline.split(" ")
、より多くの空白を保持したい場合に使用できることに注意してください。line.split()
また、with
ステートメントを使用してファイルを開くことにも注意してください。これは、例外が発生した場合でも、読みやすく、ファイルを閉じることを処理するためです。
これは良い解決策ですが、最初のループ内で何もしていない場合は、少し非効率的です。これを 1 つのループに減らすためにitertools.chain.from_iterable
、ジェネレータ式を使用できます。
import itertools
with open('in.txt') as input:
for word in itertools.chain.from_iterable(line.split() for line in input):
...