98 votes

Python analyse un nombre séparé par des virgules dans int

Comment analyserais-je la chaîne 1,000,000 (un million) dans sa valeur entière en Python ?

167voto

joaquin Points 22450
>>> a = '1,000,000'
>>> int(a.replace(',', ''))
1000000
>>> 

63voto

Khorkrak Points 2009

Il existe également un moyen simple de le faire qui devrait également traiter les problèmes d'internationalisation :

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

J'ai trouvé que je devais d'abord définir explicitement le paramètre régional comme ci-dessus, sinon ça ne marche pas pour moi et je finis par avoir une trace vilaine à la place :

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'

14voto

jathanism Points 15208

Remplacez le ',' par '', puis jette le tout dans un entier.

>>> int('1,000,000'.replace(',',''))
1000000

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X