I have numerical values that are loaded from a JSON
object and are therefore all strings.
I am having issues with making numerical comparisons with these strings. The following makes no sense to me and I was hoping one of you champions could explain..
In[2]: print '100' < '45'
True
In[3]: print '99' < '45'
False
Using Python 2.7
Python comparison operators can be used to compare strings in Python. These operators are: equal to ( == ), not equal to ( != ), greater than ( > ), less than ( < ), less than or equal to ( <= ), and greater than or equal to ( >= ).
You can convert a numeric string into integer using Integer. parseInt(String) method, which returns an int type. And then comparison is same as 4 == 4 .
We can compare two strings or two integers. Python uses lexicographic ordering for strings and numeric ordering for integers. But how can we compare one string with an integer value in python ? For that, we need to convert the string value to integer using int() constructor.
Python String Comparison operators In python language, we can compare two strings such as identify whether the two strings are equivalent to each other or not, or even which string is greater or smaller than each other.
When comparing strings they're compared by the ascii value of the characters. '1'
has a value 49, and '4'
is 52. So '1'
is < '4'
. '9'
however is 57, so '9'
is > '4'
.
If you want to compare them numerically you could just int()
the strings first like:
print int('100') < int('45')
It basically checks for lexicographic ordering. Check documentation here -
>>> 'b' <'a'
False
>>> 'a' < 'b'
True
In above example, a comes before b, hence 'a' <'b'
is true. But, not vica versa. Similarly '1'<'2'
.
Hence '199999999999' < '5'
is true because 1 comes before 5.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With