2016-11-06 9 views
0

ファイルの読み込みとその名前の印刷を行う行為をコード化しようとしています。どのようにだけはまだ完全なラインを印刷するには...それはで検索しなければならないファイルをどのように見えるかをここでファイル内の単語を検索し、2つのセパレータの間のテキストのみを印刷します。

title = input("\n Enter a movie name: ") 
     with open("Data_Film") as f: 
      for line in f: 
       if title in line: 
        print(line) 

:私はタイトルを検索する場合ので

1;Avatar;Science Fiction;3;2;3.99 
2;Little Frog;Horror;2;3;3.99 
... 

を、私はそれだけでチェックしたいと思います最初 ";" 2番目の ";"それがムービーの名前がどこにあり、それを印刷するかのように。

私の質問がはっきりしていたことを祈っています。英語は母国語ではありません。

+0

検索する単語が「Science Fiction」の場合は、ファイルの1行目で「Science Fiction」のみを印刷する必要があります。 – ritesht93

+0

私はこの質問で少し混乱しています..入力はタイトルか*ジャンル*の意味ですか?なぜなら、あなたがジャンルを入力して、そのジャンルに属する各映画のタイトルを吐き出すと、このプログラムはもっと役立つだろうと思うからです。 – Mangohero1

+0

研究は常に最初の2つの間だけに見えます。 検索が「SF」の場合は、実際には何も印刷しないでください。 – MaxyArthes

答えて

2

データファイルは常にその形式になり、タイトルは常に2番目の ';'の後にくると仮定すると、セミコロンを区切り文字として使用してネイティブの分割機能を使用できます。これにより、セミコロンの行が配列に分割され、タイトルが2番目の要素になります。

title = input("\n Enter a movie name: ") 
    with open("Data_Film") as f: 
     for line in f: 
      if title in line: 
       print(line.split(';')[1]) 
+1

良い解決策ですが、インデントを修正する必要があります。それはまだ少し問題を抱えているexept働い – Jakub

+0

が、私は「アバター」 を検索しようと言うことができますときに、その行になります: 3;テスト;アバター; 3; 2; 3.99 それは実際にテストを印刷します、ので、最初の2つの間だけを検索しないでください。 編集: nevermind、for(line.split( ';')[1])の行を変更して作業しました!ありがとう:) – MaxyArthes

+0

その場合、 '' test "'と表示されます。しかし、 '' Data_File ''の構成が一貫していると仮定すれば、これについて心配する必要はありません。 – Jakub

0

この方法を試してください。

title = input("\n Enter a movie name: ") 

with open("Data_Film") as f: 
    for line in f: 
     name = line.split(';')[1] 
     if title == name: 
      print(name) 

これが唯一の第一及び第二の間のインデントと検索を修正「;」。

関連する問題