2016-03-24 18 views
1

ユーザー入力時に異なる文字列を検索する単純なスクリプトを作成できるかどうかは不思議でした。最初に「りんご」と2度目の「オレンジ」を検索し、リンゴやオレンジが存在する行をすべて表示するとします。私は最初に二度目の検索から独立したものにしたい。これは何Python while - ネストされたループ用ユーザー入力時の文字列検索

`string = "start" 
while string != "end": 
    string = input('Enter fruit: ') 
    print("looking for ",string) 
    for line in f: 
     if "Started" and string in line: 
      print("debug") 
      print(line)` 

は初めての作品目と2回目にしません。私は出力の後に別の果物を入力するように促されますが、果物が見つかる場所のすべての行を提示するのではなく、果物を入力する別の要求を促すだけです。

+0

私は 'f'がファイルであると推測しています。もしそうなら、各検索時に '.seek'をファイルの先頭に戻す必要があります。 –

答えて

3

投稿したスニペットの上にf = open('BigTextFileFullOfFruit.txt', 'r')のような行があるとします。 ファイルに対して1回だけ反復できます。もう一度行くにはf.seek(0)に電話をしなければなりません。

+0

ありがとうございました!これで解決しました! – Nick

0

これは、fがイテレータであり、複数回は使用できないためです。その後、それは使い果たされ、もう収穫されません。
これを回避するには、冒頭のseekを使用して、コンテンツを再利用するか、listに保存して再利用してください。

0
# Put this inside your outermost loop 
string = raw_input("Enter string: ") 
f = fp.readline() 
while f: 
    if f.find(string) >= 0 and "Started": 
     print(f, end=' ') 
    f = fp.readline()