2017-04-16 17 views
0

私はPythonでファイルからデータを読み込み、それを比較して情報の一部と一致するかどうかを確認しようとしています。私はこれを持っていますファイルからの文字列がPythonの文字列と一致しません

with open("data.dat", "r") as f: #read data in from the file 
    for line in f: 
     if line is "Static": #this adds the data for the static attack 

私のファイルからデータを読み込むと、そのファイルはすぐにスキップされます。私はなぜ迷っています。

ここに私のdata.datファイルがあります。

Static 
0 10 
1 50 

答えて

3

次の2つの文字列を比較するために==を使用することがあります。

with open("data.dat", "r") as f: 
    for line in f: 
     if line == "Static": 

is

は、(身元を比較)、彼らは同じオブジェクトであるかどうかを2つのオブジェクトをテストするために使用されます。

==は、2つの変数の値を比較するために使用されます。

Python Language Reference - Objects, values and types

すべてのオブジェクトは、アイデンティティ、型と値を持っています。オブジェクトのIDは、一度作成されると決して変更されません。メモリ内のオブジェクトのアドレスと考えることができます。 is演算子は、2つのオブジェクトの同一性を比較します。 id()関数は、そのIDを表す整数を返します。このアプリケーションのために

0

、あなたはそうのように、in演算子を使用することができます。

with open("data.dat", "r") as f: 
    for line in f: 
     if "Static" in line: 
      # do something 

あなたがストリング「静的」との任意の行が条件でキャッチしたい場合、これは関係なく、かどうかの、ありますそうでない場合は、行内の唯一の文字列です。

あなたは厳密には、末尾の空白を除いて、あなたがそうのように、==演算子を使用することができ、それだけでストリング「静的」を持っている行をキャッチしたい場合:

with open("data.dat", "r") as f: 
    for line in f: 
     if line.strip() == "Static": 
      # do something 
関連する問題