2017-03-09 13 views
0

検索して結果をファイルに出力するファイルがあります。私はそれが複数の検索語で読むことを可能にするかどうか疑問に思っています。つまり、 "test"または "hello"(ユーザーが指定する)の行を出力しますが、Pythonは各検索語句?複数の検索条件と出力ファイル

すなわちOfile1は「test」を含むすべての行を開催する Ofile2は「hello」を含むすべての行を保持するので、

f = open('file3.txt') #input file 

term = raw_input("What would you like to search for?") #takes an input to be searched 

for line in f: 
    if term in line: 
     print (line) #print line of matched term 

f.close() #close file 

に行うことは可能です。このでしょうか?

+0

質問する前にいくつかの情報をお探しですか?それは非常に単純な問題です。 –

+0

無礼なことを意味するわけではありませんが、私がそれを見つけたのか尋ねることはありません。 – here2learn

答えて

1

各行ごとにいくつかの用語を確認してください。用語の数に応じて、実際に大きなファイルを使用して実行時間をチェックしてもう少し学ぶことができるようにするには、多かれ少なかれ効率的です。

+0

ありがとうございます。興味のないところではなぜ ".jpg"を検索するときに何も見つからないが、すべての "jpg"ファイルを見つけるだろうか?ケースを無視する修正されたコード – here2learn

0

用語をスペースで区切ります。 forループを使用してすべての用語をループします。

例:

terms = raw_input("What would you like to search for?") 
terms = terms.split(" ") 
for term in terms: 
    f = open('text.txt') 
    filename = '{}_output.txt'.format(term) 
    o = open(filename, 'w') 
    for line in f: 
     if term in line: 
      o.write(line) 
    o.close() 
    f.close() 

はたぶん、あなたはそれが良いです一度ファイルを開くと考えることができます(いくつかのエラーを改善)@newユーザーコードあなたはこのような何かを行うことができますのベースに

terms = term.split(" ") 
for t in terms: 
    filename = t +"_output.txt" 
    o = open(filename,'w') 
    for line in f: 
     if t in line: 
      o.write(line) #print line of matched term 
    o.close() 
+0

't'の名前の後に' term'のように使用されるので、このコード例は失敗します。そして、ユーザーの入力が1つ以上の単語である場合、コードはファイルの中のポインタが最後のファイルにあり、秒をチェックするとファイルの先頭に移動しないため、最初のファイルのみを保存します(など)。 (など)の単語。コードの最後に[tell method](https://docs.python.org/2/tutorial/inputoutput.html)を使用してこれをチェックすることができます。 また、開いているファイルをすべて閉じる必要があります。 これは単なるアドバイスであり、私たちはここに学びます。 –