python 数字字符串比较
python numeric string comparison
我有从 JSON
对象加载的数值,因此都是字符串。
我在与这些字符串进行数值比较时遇到问题。以下内容对我来说毫无意义,我希望你们中的一位冠军能解释一下..
In[2]: print '100' < '45'
True
In[3]: print '99' < '45'
False
使用Python 2.7
比较字符串时,它们是按字符的 ascii 值进行比较的。 '1'
的值为 49,而 '4'
的值为 52。因此 '1'
为 < '4'
。 '9'
然而是 57,所以 '9'
是 > '4'
.
如果你想在数字上比较它们,你可以先 int()
字符串,例如:
print int('100') < int('45')
它主要检查字典顺序。
检查文档 here -
>>> 'b' <'a'
False
>>> 'a' < 'b'
True
在上面的例子中,a 在 b 之前,因此 'a' <'b'
为真。但是,反之亦然。同样'1'<'2'
。
因此 '199999999999' < '5'
为真,因为 1 在 5 之前。
我有从 JSON
对象加载的数值,因此都是字符串。
我在与这些字符串进行数值比较时遇到问题。以下内容对我来说毫无意义,我希望你们中的一位冠军能解释一下..
In[2]: print '100' < '45'
True
In[3]: print '99' < '45'
False
使用Python 2.7
比较字符串时,它们是按字符的 ascii 值进行比较的。 '1'
的值为 49,而 '4'
的值为 52。因此 '1'
为 < '4'
。 '9'
然而是 57,所以 '9'
是 > '4'
.
如果你想在数字上比较它们,你可以先 int()
字符串,例如:
print int('100') < int('45')
它主要检查字典顺序。 检查文档 here -
>>> 'b' <'a'
False
>>> 'a' < 'b'
True
在上面的例子中,a 在 b 之前,因此 'a' <'b'
为真。但是,反之亦然。同样'1'<'2'
。
因此 '199999999999' < '5'
为真,因为 1 在 5 之前。