1

私はPythonを初めて使用し、プログラミングスキルが非常に限られています。ここで私を助けてくれることを願っています。

大きなテキスト ファイルがあり、特定の単語を検索しています。この単語を含むすべての行は、別の txt ファイルに保存する必要があります。

ファイルを検索して結果をコンソールに出力できますが、別のファイルには出力できません。どうすればそれを管理できますか?

f = open("/tmp/LostShots/LostShots.txt", "r")

searchlines = f.readlines()
f.close()
for i, line in enumerate(searchlines):
    if "Lost" in line: 
        for l in searchlines[i:i+3]: print l,
        print

f.close()

Thx 1月

4

2 に答える 2

3

ファイルの内容全体をリストに読み込むため、readlines()は使用withしないでください。代わりに、ファイル オブジェクトを 1 行ずつ繰り返し処理し、特定の単語がそこにあるかどうかを確認します。はいの場合 - 出力ファイルに書き込みます。

with open("/tmp/LostShots/LostShots.txt", "r") as input_file, \ 
     open('results.txt', 'w') as output_file:

    for line in input_file:
        if "Lost" in line:
            output_file.write(line) 

Python < 2.7 の場合、複数のアイテムを に含めることはできないことに注意してくださいwith

with open("/tmp/LostShots/LostShots.txt", "r") as input_file:
    with open('results.txt', 'w') as output_file:

        for line in input_file:
            if "Lost" in line:
                output_file.write(line) 
于 2013-10-01T11:01:26.087 に答える
1

一般的に単語を正しく一致させるには、正規表現が必要です。簡単なword in lineチェックも一致blablaLostblablaしますが、これは望ましくないと思います:

import re

with open("/tmp/LostShots/LostShots.txt", "r") as input_file, \ 
        open('results.txt', 'w') as output_file:

    output_file.writelines(line for line in input_file
                           if re.match(r'.*\bLost\b', line)

または、より冗長な表現を使用できます

    for line in input_file:
        if re.match(r'.*\bLost\b', line)):
            output_file.write(line)

補足として、os.path.joinパスを作成するために使用する必要があります。また、クロスプラットフォームの方法で一時ファイルを操作するには、tempfileモジュールの関数を参照してください。

于 2013-10-01T11:05:08.247 に答える