0

IF ステートメントがあります。

if contactstring == "['Practice Address Not Available']" | contactstring == "['']":

何が問題なのかわかりませんが (おそらく " ' " ですか?)、タイトルに記載されているエラーが表示され続けます。

私は答えを求めて他の質問を調べましたが、それらはすべて、ここでは当てはまらない文字列に対する数学演算の使用に関するものであるようです。私はこの質問がちょっと怠惰であることを知っていますが、私は一日中コーディングしていて疲れ果てています.

4

3 に答える 3

13

|は Python のビットごとの or 演算子であり、優先順位があるため、Python はこれを次のように解析します。

if contactstring == (""['Practice Address Not Available']"" | contactstring) == "['']":

あなたが見るエラーを生成します。

あなたが望むのは論理or 演算子で、Python では「or」と綴られているようです:

if contactstring == ""['Practice Address Not Available']"" or contactstring == "['']":

あなたが期待することをします。ただし、同じ変数を値の範囲と比較しているため、これはさらに優れています。

 if contactstring in ("['Practice Address Not Available']", ['']):
于 2012-06-12T04:30:02.600 に答える
4

これ|は、文字列では機能しないビット単位の 演算子です...

or(ブール論理演算子) を使用すると、より良い結果が得られます。

于 2012-06-12T04:26:59.573 に答える
2

ここでの問題は、ビットごとの OR 演算子|です。通常は問題なく動作するブール値のコンテキストでは、|優先順位が高い==ため、Python は"['Practice Address Not Available']" | contactstring最初に評価しようとします。これらのオペランドはどちらも文字列であり、ビット単位または 2 つの文字列にすることはできません。より正しい を使用すると、 よりorも優先順位が低いため、この問題を回避できます==

于 2012-06-12T04:31:03.253 に答える