2017-10-15 21 views
0

以下は、ファイルの2行目と入力を比較するコードです。他に何もファイルに存在しない場合にのみ機能、ファイルはテキストの行数を持っているとき、それはまだ動作しますので、どのように私は、コードを変更します。ファイルと入力の比較

name = input("Enter name: ") 
with open("numbers") as f: 
    lines = f.readlines() # a list of all the lines 
    if lines[1] == name: # the second line (0 indexing) 
+0

を@Rawingへ

おかげで、問題は、行の末尾に改行文字で行リストのすべてをループし、入力 – Hunter

+1

にそれらを比較してforループを行います。それを名前と比較する前に削除する必要があります。 –

+0

[Pythonで改行で区切られたファイルを読み込み、改行を破棄するのに最適な方法?](https://stackoverflow.com/questions/544921/best-method-for-reading-newline-delimited-files-in-python -and-discarding-the-new) –

答えて

0

あなたはif lines[1] == name: foo()を書きました。すべての行にこれを適用するには、使用:

lines = f.readlines() 
    for line in lines: 
     if line.rstrip() == name: 
      foo() 

rstrip()は改行のように、末尾の空白を削除します。あなたはすべての行を処理しているとインデックスを必要としない場合

よりコンパクトに、あなたはファイル上ではなく、readlinesによって返されたリストを反復処理することができます:

with open("numbers") as f: 
    for line in f: 
     if line.rstrip() == name: 
      foo() 
0

ファイルのみ2行を持っています2行目はあなたが期待していたものになるので、あなたのプログラムは動作します。

2行を超えると、2行目が改行文字\nで終了します。あなたが比較する前に最後の文字を取り除くようにしてください。

if lines[1].rstrip("\n") == name:となります。

関連する問題