Bắt đầu bằng Python 2.6, có một sự thay thế: phương pháp str.format()
. Dưới đây là một số ví dụ sử dụng các nhà điều hành hiện có định dạng chuỗi (%
):
>>> "Name: %s, age: %d" % ('John', 35)
'Name: John, age: 35'
>>> i = 45
>>> 'dec: %d/oct: %#o/hex: %#X' % (i, i, i)
'dec: 45/oct: 055/hex: 0X2D'
>>> "MM/DD/YY = %02d/%02d/%02d" % (12, 7, 41)
'MM/DD/YY = 12/07/41'
>>> 'Total with tax: $%.2f' % (13.00 * 1.0825)
'Total with tax: $14.07'
>>> d = {'web': 'user', 'page': 42}
>>> 'http://xxx.yyy.zzz/%(web)s/%(page)d.html' % d
'http://xxx.yyy.zzz/user/42.html'
Dưới đây là các đoạn tương đương nhưng sử dụng str.format()
:
>>> "Name: {0}, age: {1}".format('John', 35)
'Name: John, age: 35'
>>> i = 45
>>> 'dec: {0}/oct: {0:#o}/hex: {0:#X}'.format(i)
'dec: 45/oct: 0o55/hex: 0X2D'
>>> "MM/DD/YY = {0:02d}/{1:02d}/{2:02d}".format(12, 7, 41)
'MM/DD/YY = 12/07/41'
>>> 'Total with tax: ${0:.2f}'.format(13.00 * 1.0825)
'Total with tax: $14.07'
>>> d = {'web': 'user', 'page': 42}
>>> 'http://xxx.yyy.zzz/{web}/{page}.html'.format(**d)
'http://xxx.yyy.zzz/user/42.html'
Giống như Python 2.6+, tất cả Python 3 phiên bản (cho đến nay) hiểu cách làm cả hai. Tôi không biết xấu hổ đã tách công cụ này ra khỏi my hardcore Python intro book và các trang trình bày cho Intro + Intermediate Python courses I offer theo thời gian. :-)
Mã trong câu hỏi sử dụng "str()", mã trong câu trả lời của Konrad không thành công. Vì vậy, đây là một ví dụ đơn giản: 'myFloat = 4.55' ' myString = '% d'% (myFloat) ' ' print myString' –
Đối với các trường hợp khác sử dụng phao (nếu bạn muốn hiển thị số thập phân), bạn nên sử dụng '% f 'thay vì'% d' – jocull
@jocull Đúng, nhưng phương thức này không được dùng để ủng hộ 'str.format', và có các chuỗi định dạng hoạt động hoàn toàn khác nhau. –