比较python中不同类型的字符串
我用下面的方法得到两个包含整数值的字符串。我尝试了所有的选择,但结果总是错误的比较python中不同类型的字符串,python,Python,我用下面的方法得到两个包含整数值的字符串。我尝试了所有的选择,但结果总是错误的 string1 = element.__dict__.get('layer') # '7' temp_string2,temp_string3=temp_key.split(':') # temp_key = '7:12' if string1 == temp_string2: print "data found" 虽然两者包含相同的值,但我没有得到正确答
string1 = element.__dict__.get('layer') # '7'
temp_string2,temp_string3=temp_key.split(':') # temp_key = '7:12'
if string1 == temp_string2:
print "data found"
虽然两者包含相同的值,但我没有得到正确答案。关于这一点,我可以有一些意见吗?
元素。层是一个int
,而不是字符串。这就是为什么repr(string1)
将返回7
,而不是'7'
。你应该试试
string1` = str(element.layer)
同时请注意,您不应该直接通过\uu dict\uu
访问对象属性,而应该使用
符号。根据我在评论流中看到的内容
您能将打印报告(string1)和打印报告(temp_string2)添加到您的代码中吗
告诉我们变量包含什么
我得了7分和7分。我该怎么解决这个问题呢。为什么会有这样的分歧呢
了解到在这两种情况下都是字符串
很明显,您正在将整数与字符串进行比较
如果print repr(string1)
,返回7
和print repr(temp\u 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')
你能把打印repr(string1),repr(temp_string2)
添加到你的代码中,告诉我们变量包含什么吗?我得到了7和“7”。我该怎么解决这个问题呢。为什么会有这种差异。我知道在这两种情况下它都是字符串。同样,为什么要使用元素。
而不是元素。layer
@user765443——您是否将字符串
与int
进行比较?try:type(string1)
@Martin我纠正了这个错误。我看到了现有的代码,所以我尝试使用相同的东西。我有element.layer,它也给了我同样的东西,得到了ISSUE。Thx抱歉我的疏忽您关于属性的奇怪访问的最后一条注释是错误的,它是元素。层-元素不是dict,原始的是访问它的\uu dict\uuu
,然后从中获得。