2010-06-01 37 views

Trả lời

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

Thay thế ',' bằng '' và sau đó truyền toàn bộ số nguyên.

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

Ngoài ra còn có một cách đơn giản để làm điều này mà nên xử lý các vấn đề quốc tế cũng như:

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

tôi thấy rằng mặc dù tôi phải thiết lập một cách rõ ràng miền địa phương đầu tiên nếu không nó không làm việc cho tôi và tôi kết thúc với một traceback xấu xí thay vì:

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' 

Vì vậy, nếu điều đó xảy ra với bạn:

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

Ý của bạn là: 'locale.setlocale (locale.LC_ALL, 'en_US.UTF-8')' Tức là "UTF-8", không phải "UTF8". Trên máy OSX của tôi có vẻ là giá trị chính xác. –

Các vấn đề liên quan