2012-04-19 32 views
6

Tôi muốn có hàng nghìn dấu phân tách trong phao nổi. Những gì tôi đang làm là:Dấu phân cách hàng nghìn trong chuỗi định dạng có phao nổi

>>> import locale 
>>> locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') 
'en_US.UTF-8' 
>>> print '{0:n}'.format(123456.0) 
123,456 

Khi phần số nguyên có 7 hoặc nhiều chữ số nó không hoạt động:

>>> print '{0:n}'.format(1234567.0) 
1.23457e+06 

Cách giải quyết mà tôi tìm thấy là để biến float sang integer trước khi formating :

>>> print '{0:n}'.format(int(1234567.0)) 
1,234,567 

Có chuỗi định dạng nào có thể xử lý tất cả các phao mà không cần biến nó thành số nguyên đầu tiên không?

Trả lời

6

Sử dụng chức năng định dạng module ngôn ngữ:

>>> locale.setlocale(locale.LC_ALL, 'English') 
>>> 'English_United States.1252' 

>>> print locale.format('%.2f', 123456789.0, True) 
>>> 123,456,789.00 
6

Thiết lập miền địa phương là một chút xấu xí như nó không phải là thread-safe và rất phụ thuộc vào những gì các địa phương thực hiện. Nó có thể là những gì bạn muốn, nhưng đây là phiên bản nội bộ của Python (bắt đầu từ 2.7):

>>> '{0:,.2f}'.format(123466666) 
'123,466,666.00' 

Xem http://www.python.org/dev/peps/pep-0378/ để biết thông số kỹ thuật.

+0

Tôi thích câu trả lời này nhiều hơn sau đó câu trả lời được chấp nhận. Cảm ơn! – Mathias711

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