Python:意外的字符串比较结果:True!= True

时间:2019-01-21 09:59:10

标签: python django string comparison

我一直在研究SO中的这一问题,但找不到类似的问题。

这是我的问题: 我有一个像这样序列化的JSON-String

data = json.loads(data)
attr = data['data']

在此数据集中,有两个属性,将其称为@ attr1和@ attr2。这是显示问题的我的测试代码:

print('///')
print(attr['@attr1'])  # where attr['@attr1'] is a string and either 'True' (sometimes also 'true') or 'False'
print('+++')
print(attr['@attr2']) # where attr['@attr2'] is a string and either '1' or '0'
print('///')

if attr['@attr1'] == 'True' or attr['@attr1'] == 'true':
    print('As True:')
    print(attr['@attr1'])
else:
    print('As NOT True:')
    print(attr['@attr1'])
if attr['@attr2'] == '1':
    print('As 1:')
    print(attr['@attr2'])
else:
    print('As NOT 1:')
    print(attr['attr2'])

此脚本的输出为:

# OUTPUT:

///
True
+++
1
///
As NOT True:
True
As NOT 1:
1

Process finished with exit code 0

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

首先,如果有的话,请使用print(type(data[...]))检查属性的类型。 也许您的数据是 boolean True和整数1

如果类型与str不同,则比较结果为False,因为python不会隐式地键入强制类型转换/强制转换(不同于JS)。