Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python numeric string comparison [duplicate]

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

like image 471
Brian Leach Avatar asked Feb 18 '16 18:02

Brian Leach


People also ask

How do you compare two numeric strings in Python?

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 ( >= ).

How do you compare two numeric strings?

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 .

Can we compare string and number in Python?

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.

Does Python allow comparison of 2 string values?

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.


2 Answers

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')
like image 198
Eric Renouf Avatar answered Sep 30 '22 21:09

Eric Renouf


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.

like image 33
malhar Avatar answered Sep 30 '22 19:09

malhar