web-dev-qa-db-ja.com

テキストファイルを検索し、Pythonで関連する行を印刷しますか?

キーフレーズまたはキーワードをテキストファイルで検索し、キーフレーズまたはキーワードが含まれている行を印刷するにはどうすればよいですか?

30
Noah R
searchfile = open("file.txt", "r")
for line in searchfile:
    if "searchphrase" in line: print line
searchfile.close()

複数の行を(簡単な方法で)印刷するには

f = open("file.txt", "r")
searchlines = f.readlines()
f.close()
for i, line in enumerate(searchlines):
    if "searchphrase" in line: 
        for l in searchlines[i:i+3]: print l,
        print

print l,のコンマにより、余分なスペースが出力に表示されなくなります。末尾のprintステートメントは、異なる行の結果を区別します。

またはそれ以上(マークランサムから盗み取ります):

with open("file.txt", "r") as f:
    searchlines = f.readlines()
for i, line in enumerate(searchlines):
    if "searchphrase" in line: 
        for l in searchlines[i:i+3]: print l,
        print
56
senderle
with open('file.txt', 'r') as searchfile:
    for line in searchfile:
        if 'searchphrase' in line:
            print line

senderle に謝罪して、私が露骨にコピーした人。

20
Mark Ransom

「i + 3」の範囲外のインデックスの可能性に注意してください。次のようなことができます:

with open("file.txt", "r") as f:
    searchlines = f.readlines()
j=len(searchlines)-1
for i, line in enumerate(searchlines):
    if "searchphrase" in line: 
        k=min(i+3,j)
        for l in searchlines[i:k]: print l,
        print

編集:おそらく必要ありません。いくつかの例をテストしました。 yが範囲外の場合、x [y]はエラーを返しますが、x [y:z]はyとzの範囲外の値に対してエラーを与えないようです。

2
bill