2017-07-28 7 views
0

この質問はおそらく重複していますが、私が見つけた回答はうまくいかないようです。Python 3:ファイル内の行を検索

:これは私の一般的な目的であるsong2、www.link2.com

- 歌、www.link.com

artist2 -

アーティスト:私は、このレイアウトのフル.txtファイルを持っています

uinput = input("input here: ") 

save = open("save.txt", "w+") 
ncount = save.count("\n") 

for i in range(0, ncount): 
    t = save.readline() 
    if uinput in t: 
     print("Your string " uinput, " was found in" end = "")   
     print(t) 

私の意図は:ユーザインプットワードがライン内に見つかった場合は、ラインまたはリンク全体を印刷します。

答えて

1

with.. asコンテキストマネージャでこれを是正することができますあなたは、たとえば、ファイルを読み、単語を含む行のみを取得するには、リスト-理解を使用することができます。

with open('save.txt', 'r') as f: 
    uinput = input("input here: ") 
    found = [line.rstrip() for line in f if uinput.lower() in line.lower()] 
    if found: 
     print('Found in these lines: ') 
     print('\n'.join(found)) 
    else: 
     print('Not found.') 

リンクのみを印刷する場合は、次を使用できます。

found = [line.rstrip().split(',')[1] for line in f if uinput.lower() in line.lower()] 
4
  1. ファイルを読み込みたいが、書き込みモードでファイルを開いている。あなたは、ファイルを反復処理しないw+

  2. 最も簡単な方法は、ファイルオブジェクトの上に直接

  3. エラーではありませんが、nitpickを反復forループを持つことである、rを使用する必要があります。ファイルを閉じないでください。あなたは


uinput = input("input here: ") 

with open("save.txt", "r") as f: 
    for line in f: 
     if uinput in line: 
      print('Match found') 
0

リスト内包表記を使用して、ユーザー入力語を含む行をフェッチできます。 コードを使用:

try: 
    f = open("file/toyourpath/filename.txt", "r") 
    data_input = raw_input("Enter your listed song from file :"); 
    print data_input 
    fetch_line = [line for line in f if data_input in line] 
    print fetch_line 
    f.close() 
except ValueError, e: 
    print e 
関連する問題