0

次の方法で、整数値を含む 2 つの文字列を取得しています。すべてのオプションを試しましたが、結果として常に False になりました。

    string1    = element.__dict__.get('layer')    # '7'

    temp_string2,temp_string3=temp_key.split(':') # temp_key = '7:12'

    if string1 == temp_string2:
          print "data found"

両方に同じ値が含まれていますが、True を取得できませんでした。これについて何か意見をいただけますか?

4

2 に答える 2

1

element.layerではintなく、stringです。repr(string1)これが、返さ7ない理由'7'です。試してみてください

string1` = str(element.layer)

__dict__同時に、オブジェクト属性に直接アクセスするのでは.なく、表記法を使用してアクセスする必要があることに注意してください。

于 2013-01-01T14:12:34.373 に答える
0

コメントストリームで見たものに基づいて

コードに print repr(string1), repr(temp_string2) を追加して、変数の内容を表示していただけますか?

7 と '7' を取得しました。この問題を解決するにはどうすればよいですか。この違いはなぜですか。どちらの場合も文字列になることがわかりました

明らかに、整数と文字列を比較しています。

の場合print repr(string1)、 を返し、7then を返します。これはprint repr(temp_string2)"7"string1

string1    = element.__dict__.get('layer')

整数でなければなりません

したがって、比較string1する前に変換する必要がありますinteger

if str(string1) == temp_string2:
     print "data found"

または辞書から値を取得した後、文字列に変換します

string1 = str(element.__dict__.get('layer'))

.奇妙なことに、dict の get メソッドにアクセスする非常に型破りな方法です。代わりに、記法で参照するメンバーを単純に実行できます。

string1    = element.get('layer')
于 2013-01-01T14:13:43.797 に答える