Python analiza el número separado por comas en int [duplicar]


Posible Duplicado:
¿Cómo uso Python para convertir una cadena en un número si tiene comas como separadores de miles?

¿Cómo analizaría la cadena 1,000,000 (un millón) en su valor entero en Python?

Author: Community, 2010-06-02

3 answers

>>> a = '1,000,000'
>>> int(a.replace(',', ''))
1000000
>>> 
 78
Author: joaquin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-28 21:01:09

También hay una forma sencilla de hacer esto que también debería manejar los problemas de internacionalización:

>>> import locale
>>> locale.atoi("1,000,000")
1000000
>>> 

Sin embargo, encontré que tengo que establecer explícitamente la configuración regional primero, de lo contrario no funciona para mí y termino con un rastreo feo en su lugar:

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'

Así que si eso te sucede a ti:

>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF8')
'en_US.UTF8'
>>> locale.atoi("1,000,000")
1000000
>>> 
 32
Author: Khorkrak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-02 00:21:09

Reemplaza el', ' por " y luego convierte todo en un entero.

>>> int('1,000,000'.replace(',',''))
1000000
 9
Author: jathanism,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-01 22:14:10