92

How would I parse the string 1,000,000 (one million) into it's integer value in Python?

Henry Ecker
  • 34,399
  • 18
  • 41
  • 57
roryf
  • 29,592
  • 16
  • 81
  • 103
  • 3
    See http://stackoverflow.com/questions/1779288/how-do-i-use-python-to-convert-a-string-to-a-number-if-it-has-commas-in-it-as-tho/1779324 – unutbu Jun 01 '10 at 22:15

3 Answers3

157
>>> a = '1,000,000'
>>> int(a.replace(',', ''))
1000000
>>> 
joaquin
  • 82,968
  • 29
  • 138
  • 152
60

There's also a simple way to do this that should handle internationalization issues as well:

>>> import locale
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
'en_US.UTF-8'
>>> locale.atoi("1,000,000")
1000000
>>> 

I found that I have to explicitly set the locale first as above, otherwise it doesn't work for me and I end up with an ugly traceback instead:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.6/locale.py", line 296, in atoi
    return atof(str, int)
  File "/usr/lib/python2.6/locale.py", line 292, in atof
    return func(string)
ValueError: invalid literal for int() with base 10: '1,000,000'
c0d3rman
  • 665
  • 6
  • 15
Khorkrak
  • 3,911
  • 2
  • 27
  • 37
13

Replace the ',' with '' and then cast the whole thing to an integer.

>>> int('1,000,000'.replace(',',''))
1000000
jathanism
  • 33,067
  • 9
  • 68
  • 86