Tất cả các ví dụ giả định Python 3+
Xem sự khác biệt giữa việc cắt ngắn và làm tròn một số
Tất cả các ví dụ có thể được xem trên sổ ghi chép Jupyter này
Định dạng nổi dưới dạng số nguyên
Nói cách khác, làm tròn nó lên đến số nguyên và định dạng gần nhất:round it up to the nearest integer and format:
print('{:.0f}'.format(8.0)) # >>> '8'
print('{:.0f}'.format(8.9)) # >>> '9'
Vòng nổi đến 2 chữ số thập phân
print('{:.2f}'.format(5.39120)) # >>> '5.40'
Định dạng nổi dưới dạng tỷ lệ phần trăm
Định dạng một số theo tỷ lệ phần trăm, với 2 số thập phân
'{:.2f}%'.format(10.12345) # >>> '10.12%'
Cắt đứt nổi ở 2 số thập phân
Xem toàn bộ mã cho một phiên bản tổng quát trên sổ ghi chép này
Các chữ số thả sau vị trí thập phân thứ hai (nếu có).
import re # see the notebook for a generalized version def truncate(num): return re.sub(r'^(\d+\.\d{,2})\d*$',r'\1',str(num)) truncate(8.499) # >>> '8.49' truncate(8.49) # >>> '8.49' truncate(8.4) # >>> '8.4' truncate(8.0) # >>> '8.0' truncate(8) # >>> '8'
Đẹp trái với số không
Ví dụ làm cho kích thước đầy đủ bằng 9 (tất cả bao gồm), điền vào số không ở bên trái: make the full size equal to 9 (all included), filling with zeros to the left:
# make the total string size AT LEAST 9 (including digits and points), fill with zeros to the left '{:0>9}'.format(3.499) # >>> '00003.499'
# make the total string size AT LEAST 2 (all included), fill with zeros to the left '{:0>2}'.format(3) # >>> '03'
Đệm đúng với số không
Ví dụ làm cho kích thước đầy đủ bằng 11, lấp đầy các số không ở bên phải: make the full size equal to 11, filling with zeros to the right:
'{:<011}'.format(3.499) # >>> '3.499000000'
Sử dụng dấu phẩy làm dấu phân cách hàng ngàn
"{:,}".format(100000) # >>> '100,000'
Biến đổi biến với dây F
Bạn có thể sử dụng bất kỳ tùy chọn định dạng nào khác với F-Strings:f-strings:
Ví dụ: Cắt ngắn thành 2 chữ số thập phân trong F-String truncate to 2 decimal places in f-string
num = 1.12745 formatted = f"{num:.2f}" formatted # >>> '1.13'
ValueError: tên trường không độ dài ở định dạng
Trong một số phiên bản Python như 2.6 và 3.0, bạn phải chỉ định các chỉ mục vị trí trong chuỗi định dạng:must specify positional indexes in the format string:
print('{:.0f}'.format(8.9)) # >>> '9' 0
Người giới thiệu
- Python 3 DOCS: Đặc điểm kỹ thuật Đặc điểm kỹ thuật
Python v2.7 đã giới thiệu một phương thức gây ra chuỗi mới, hiện là mặc định trong Python3. Tôi đã bắt đầu chuỗi này định dạng cuốn sách nấu ăn như một tài liệu tham khảo nhanh để giúp tôi định dạng số và chuỗi. Nhờ những người đóng góp khác, tôi đã mở rộng các ví dụ theo thời gian. Python 3.6 được giới thiệu, các chuỗi chuỗi được định dạng, thường được gọi là F-Strings là một phương pháp khác để giúp các chuỗi định dạng. Nhảy đến phần F-Strings mới bên dưới. Bảng sau đây cho thấy nhiều cách khác nhau để định dạng số bằng cách sử dụng python, str.format (), bao gồm các ví dụ cho cả định dạng float và định dạng số nguyên. Để chạy ví dụ sử dụng: '{:.2f}%'.format(10.12345)
# >>> '10.12%'
3 Để có được đầu ra của ví dụ đầu tiên, việc định dạng một chiếc phao đến hai vị trí thập phân, bạn sẽ chạy: '{:.2f}%'.format(10.12345)
# >>> '10.12%'
4 String.Format () cơ bảnĐịnh dạng số
Con sốĐịnh dạngĐầu raSự mô tả 3.1415926 {: .2f} 3.14 Định dạng nổi 2 vị trí thập phân 3.1415926 {:+. 2f} +3.14 Định dạng nổi 2 vị trí thập phân với dấu hiệu -1 {:+. 2f} -1.00 Định dạng nổi 2 vị trí thập phân với dấu hiệu 2.71828 {: .0f} 3 Định dạng nổi không có vị trí thập phân 5 {: 0> 2d} 05 Số pad với số không (đệm trái, chiều rộng 2) 5 {:x 5xxx Số pad với X X (Đệm phải, chiều rộng 4) 10 {:x 10xx Số pad với X X (Đệm phải, chiều rộng 4) 1000000 10xx 1,000,000 {:,} 0.25 Định dạng số với dấu phân cách dấu phẩy {: .2%} 25,00% 1000000000 Tỷ lệ phần trăm định dạng 1.00e+09 {: .2e} 13 Ký hiệu số mũ {: 10d} & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; 13 13 Thẳng hàng (mặc định, chiều rộng 10) 13 {: 13 Căn chỉnh trái (chiều rộng 10) {:^10d} & nbsp; & nbsp; & nbsp; & nbsp; 13 Trung tâm căn chỉnh (chiều rộng 10)
Dưới đây là một vài ví dụ về thay thế chuỗi cơ bản, '{:.2f}%'.format(10.12345) # >>> '10.12%' 5 là trình giữ chỗ cho các biến thay thế. Nếu không có định dạng nào được chỉ định, nó sẽ chèn và định dạng dưới dạng chuỗi.
print('{:.0f}'.format(8.9)) # >>> '9' 2Bạn cũng có thể sử dụng vị trí số của các biến và thay đổi chúng trong chuỗi, điều này mang lại sự linh hoạt khi thực hiện định dạng, nếu bạn mắc lỗi theo thứ tự bạn có thể dễ dàng sửa mà không xáo trộn tất cả các biến xung quanh.
print('{:.0f}'.format(8.9)) # >>> '9' 3Mẹo: Bạn có thể sử dụng '{:.2f}%'.format(10.12345) # >>> '10.12%' 5 như một biến bên trong giá đỡ định dạng (H/T Peter Beens cho TIP). Ví dụ này sử dụng một biến chính xác để kiểm soát số thập phân để hiển thị:
% Chuỗi định dạng phần trăm cũ hơn
Trước Python 2.6, cách định dạng các chuỗi có xu hướng đơn giản hơn một chút, mặc dù bị giới hạn bởi số lượng đối số mà nó có thể nhận được. Các phương pháp này vẫn hoạt động như Python 3.3, nhưng có những mối đe dọa che giấu về việc phản đối chúng hoàn toàn mặc dù không có bảng thời gian. [PEP-3101]
Định dạng số điểm nổi:
print('{:.0f}'.format(8.9)) # >>> '9' 4Một ví dụ so sánh '{:.2f}%'.format(10.12345) # >>> '10.12%' 7 cũ hơn với '{:.2f}%'.format(10.12345) # >>> '10.12%' 8 để định dạng số float:
Nhiều giá trị thay thế
print('{:.0f}'.format(8.9)) # >>> '9' 5Một ví dụ so sánh thay thế biến:
Không đủ lập luận
print('{:.0f}'.format(8.9)) # >>> '9' 6Sử dụng phương thức định dạng cũ hơn, tôi thường gặp các lỗi:
print('{:.0f}'.format(8.9)) # >>> '9' 7hoặc
Bởi vì tôi đã xử lý các biến thay thế của mình, làm một cái gì đó như sau đây giúp bạn dễ dàng bỏ lỡ một biến.
print('{:.0f}'.format(8.9)) # >>> '9' 8Chuỗi python mới định dạng mà bạn có thể sử dụng các tham số được đánh số để bạn không phải đếm số lượng bạn có, ít nhất là trên một nửa của nó.
Thêm định dạng chuỗi với .format ()
Hàm định dạng () cung cấp một lượng lớn các tính năng và khả năng bổ sung, đây là một vài mẹo và thủ thuật hữu ích bằng cách sử dụng .format ()
Có tên là đối số
print('{:.0f}'.format(8.9)) # >>> '9' 9Bạn có thể sử dụng định dạng chuỗi làm công cụ mẫu bằng cách sử dụng các đối số được đặt tên, thay vì yêu cầu một thứ tự nghiêm ngặt.
Nếu bạn đang sử dụng Python 3.6 trở lên, hãy xem định dạng dây F bên dưới để biết cách dễ dàng hơn để tạo mẫu mà họ cũng tính toán các phép nội suy nhanh hơn!
Tái sử dụng cùng một biến nhiều lần
print('{:.2f}'.format(5.39120)) # >>> '5.40' 0Sử dụng % để định dạng yêu cầu thứ tự nghiêm ngặt của các biến, phương thức '{:.2f}%'.format(10.12345) # >>> '10.12%' 9 cho phép bạn đặt chúng theo bất kỳ thứ tự nào cũng như lặp lại để tái sử dụng.
Chuyển đổi các giá trị thành các cơ sở khác nhaudecimal, hex, octal, or binary.
Một cách sử dụng đáng ngạc nhiên, bạn có thể sử dụng lệnh định dạng chuỗi để chuyển đổi số sang các cơ sở khác nhau. Sử dụng chữ cái trong định dạng để chỉ ra số lượng số nào: thập phân, hex, bát phân hoặc nhị phân.
print('{:.2f}'.format(5.39120)) # >>> '5.40' 1Ví dụ này định dạng số import re # see the notebook for a generalized version def truncate(num): return re.sub(r'^(\d+\.\d{,2})\d*$',r'\1',str(num)) truncate(8.499) # >>> '8.49' truncate(8.49) # >>> '8.49' truncate(8.4) # >>> '8.4' truncate(8.0) # >>> '8.0' truncate(8) # >>> '8' 0 trong mỗi cơ sở:
Sử dụng định dạng làm hàm
print('{:.2f}'.format(5.39120)) # >>> '5.40' 2Bạn có thể sử dụng import re # see the notebook for a generalized version def truncate(num): return re.sub(r'^(\d+\.\d{,2})\d*$',r'\1',str(num)) truncate(8.499) # >>> '8.49' truncate(8.49) # >>> '8.49' truncate(8.4) # >>> '8.4' truncate(8.0) # >>> '8.0' truncate(8) # >>> '8' 1 làm hàm để tách văn bản và định dạng khỏi mã. Ví dụ: khi bắt đầu chương trình của bạn bao gồm tất cả các định dạng của bạn để sử dụng sau.
Hat Tip to Earthboundkids, những người đã cung cấp điều này cho Reddit.
print('{:.2f}'.format(5.39120)) # >>> '5.40' 3Sử dụng định dạng làm hàm có thể được sử dụng để điều chỉnh hình thành theo sở thích của người dùng.
Quốc tế hóa
Để sử dụng định dạng cụ thể của Locale cho các số, trước tiên bạn cần đặt Locale và sau đó sử dụng mã hình thành import re # see the notebook for a generalized version def truncate(num): return re.sub(r'^(\d+\.\d{,2})\d*$',r'\1',str(num)) truncate(8.499) # >>> '8.49' truncate(8.49) # >>> '8.49' truncate(8.4) # >>> '8.4' truncate(8.0) # >>> '8.0' truncate(8) # >>> '8' 2 thay vì import re # see the notebook for a generalized version def truncate(num): return re.sub(r'^(\d+\.\d{,2})\d*$',r'\1',str(num)) truncate(8.499) # >>> '8.49' truncate(8.49) # >>> '8.49' truncate(8.4) # >>> '8.4' truncate(8.0) # >>> '8.0' truncate(8) # >>> '8' 3. Ví dụ: sử dụng dấu phẩy hoặc thời gian để tách hàng ngàn số dựa trên ngôn ngữ của người dùng.
print('{:.2f}'.format(5.39120)) # >>> '5.40' 4Dưới đây là một ví dụ, thiết lập locale và định dạng một số để hiển thị bộ phân cách thích hợp:
Thoát khỏi niềng răng
print('{:.2f}'.format(5.39120)) # >>> '5.40' 5Nếu bạn cần sử dụng niềng răng khi sử dụng import re # see the notebook for a generalized version def truncate(num): return re.sub(r'^(\d+\.\d{,2})\d*$',r'\1',str(num)) truncate(8.499) # >>> '8.49' truncate(8.49) # >>> '8.49' truncate(8.4) # >>> '8.4' truncate(8.0) # >>> '8.0' truncate(8) # >>> '8' 4, chỉ cần tăng gấp đôi chúng:
Bảng định dạng dữ liệu
print('{:.2f}'.format(5.39120)) # >>> '5.40' 6Sử dụng chiều rộng và biện minh bên trái và bên phải để sắp xếp dữ liệu của bạn thành một định dạng bảng đẹp. Ở đây, một ví dụ để chỉ ra cách định dạng:
print('{:.2f}'.format(5.39120)) # >>> '5.40' 7F-Strings
Điều này sẽ xuất hiện:
print('{:.2f}'.format(5.39120)) # >>> '5.40' 8Chuỗi được định dạng hỗ trợ các chức năng chạy bên trong dấu ngoặc import re # see the notebook for a generalized version def truncate(num): return re.sub(r'^(\d+\.\d{,2})\d*$',r'\1',str(num)) truncate(8.499) # >>> '8.49' truncate(8.49) # >>> '8.49' truncate(8.4) # >>> '8.4' truncate(8.0) # >>> '8.0' truncate(8) # >>> '8' 7 Điều này cho phép bạn:
1. Làm toán với các chuỗi F:
print('{:.2f}'.format(5.39120)) # >>> '5.40' 92. Các chức năng gọi với dây F;
'{:.2f}%'.format(10.12345) # >>> '10.12%' 0Bạn có thể sử dụng dây F bằng ba loại dấu ngoặc kép khác nhau trong Python, Single, Double hoặc Triple Trích dẫn. Tất cả những điều sau đây sẽ giống nhau:
'{:.2f}%'.format(10.12345) # >>> '10.12%' 1Một điều bạn muốn cẩn thận là trộn hai định dạng, nếu bạn cố gắng sử dụng '{:.2f}%'.format(10.12345) # >>> '10.12%' 5 bên trong chuỗi F, bạn sẽ gặp lỗi:
'{:.2f}%'.format(10.12345) # >>> '10.12%' 2Mỗi bộ ngoặc được sử dụng trong một chuỗi F yêu cầu một giá trị hoặc biến.
Tài nguyên
- Thư viện chuỗi Python - Tài liệu thư viện tiêu chuẩn
- Cookbook Python Argparse của tôi-Ví dụ về các đối số dòng lệnh phân tích cú pháp
- Định dạng ngày Python của tôi - các ví dụ làm việc với ngày Python.