web-dev-qa-db-fra.com

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

Duplicata possible:
Comment utiliser Python pour convertir une chaîne en nombre s'il contient des virgules comme séparateurs de milliers?

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

46
roryf
>>> a = '1,000,000'
>>> int(a.replace(',', ''))
1000000
>>> 
89
joaquin

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

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

J'ai trouvé cependant que je dois d'abord définir explicitement les paramètres régionaux, sinon cela ne fonctionne pas pour moi et je me retrouve avec un triste retour à 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'

Donc, si cela vous arrive:

>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF8')
'en_US.UTF8'
>>> locale.atoi("1,000,000")
1000000
>>> 
35
Khorkrak

Remplacez le ',' par '', puis convertissez le tout en un entier.

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