Python将逗号分隔的数字解析为int

Python将逗号分隔的数字解析为int,python,string-conversion,Python,String Conversion,可能重复: 如何在Python中将字符串1000000(一百万)解析为它的整数值?将“,”替换为“”,然后将整个字符串转换为整数 >>> a = '1,000,000' >>> int(a.replace(',', '')) 1000000 >>> >>> int('1,000,000'.replace(',','')) 1000000 还有一种简单的方法可以解决国际化问题: >>> import

可能重复:

如何在Python中将字符串
1000000
(一百万)解析为它的整数值?

将“,”替换为“”,然后将整个字符串转换为整数

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

还有一种简单的方法可以解决国际化问题:

>>> import locale
>>> locale.atoi("1,000,000")
1000000
>>> 
但我发现,我必须先显式设置区域设置,否则它对我不起作用,我最终会得到一个丑陋的回溯:

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'

参见您的意思:
locale.setlocale(locale.LC_ALL,'en_US.UTF-8')
即“UTF-8”,而不是“UTF8”。在我的OSX机器上,这似乎是正确的值。这应该是公认的答案。逗号替换hack是易碎的,并且i18n会断裂。
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF8')
'en_US.UTF8'
>>> locale.atoi("1,000,000")
1000000
>>>