Định dạng chuỗi Python
F-String được giới thiệu trong Python 3.6 và hiện là cách định dạng chuỗi ưa thích.
Trước Python 3.6, chúng ta phải sử dụng phương thức format()
.
Dây F
Chuỗi F cho phép bạn định dạng các phần được chọn của chuỗi.
Để chỉ định một chuỗi là chuỗi f, chỉ cần đặt f
trước chuỗi ký tự, như sau:
Giữ chỗ và sửa đổi
Để định dạng các giá trị trong chuỗi f, hãy thêm phần giữ chỗ {}
, phần giữ chỗ có thể chứa các biến, phép toán, hàm và công cụ sửa đổi để định dạng giá trị.
Ví dụ
Thêm phần giữ chỗ cho biến price
:
price = 59
txt = f"The price is {price} dollars"
print(txt)
Hãy tự mình thử »Trình giữ chỗ cũng có thể bao gồm công cụ sửa đổi để định dạng giá trị.
Một công cụ sửa đổi được bao gồm bằng cách thêm dấu hai chấm :
theo sau là loại định dạng hợp pháp, như .2f
có nghĩa là số điểm cố định có 2 số thập phân:
Ví dụ
Hiển thị giá bằng 2 số thập phân:
price = 59
txt = f"The price is {price:.2f} dollars"
print(txt)
Hãy tự mình thử »Bạn cũng có thể định dạng trực tiếp một giá trị mà không cần giữ nó trong một biến:
Ví dụ
Hiển thị giá trị 95
với 2 số thập phân:
txt = f"The price is {95:.2f} dollars"
print(txt)
Hãy tự mình thử » Thực hiện các thao tác trong chuỗi F
Bạn có thể thực hiện các thao tác Python bên trong phần giữ chỗ.
Bạn có thể thực hiện các phép toán:
Ví dụ
Thực hiện phép tính trong phần giữ chỗ và trả về kết quả:
txt = f"The price is {20 * 59} dollars"
print(txt)
Hãy tự mình thử »Bạn có thể thực hiện các phép toán trên các biến:
Ví dụ
Thêm thuế trước khi hiển thị giá:
price = 59
tax = 0.25
txt = f"The price is {price + (price * tax)} dollars"
print(txt)
Hãy tự mình thử » Bạn có thể thực hiện các câu lệnh if...else
bên trong phần giữ chỗ:
Ví dụ
Trả về “Đắt” nếu giá trên 50, ngược lại trả về “Rẻ”:
price = 49
txt = f"It is very {'Expensive' if price>50 else 'Cheap'}"
print(txt)
Hãy tự mình thử »Thực thi các hàm trong chuỗi F
Bạn có thể thực thi các chức năng bên trong trình giữ chỗ:
Ví dụ
Sử dụng phương thức chuỗi upper()
để chuyển đổi một giá trị thành chữ in hoa:
fruit = "apples"
txt = f"I love {fruit.upper()}"
print(txt)
Hãy tự mình thử »Hàm này không nhất thiết phải là phương thức Python tích hợp, bạn có thể tạo các hàm của riêng mình và sử dụng chúng:
Ví dụ
Tạo hàm chuyển đổi feet thành mét:
def myconverter(x):
return x * 0.3048
txt = f"The plane is flying at a {myconverter(30000)} meter altitude"
print(txt)
Hãy tự mình thử »Thêm sửa đổi
Ở đầu chương này, chúng tôi đã giải thích cách sử dụng công cụ sửa đổi .2f
để định dạng một số thành một số dấu phẩy cố định có 2 số thập phân.
Có một số công cụ sửa đổi khác có thể được sử dụng để định dạng giá trị:
Ví dụ
Sử dụng dấu phẩy làm dấu phân cách hàng nghìn:
price = 59000
txt = f"The price is {price:,} dollars"
print(txt)
Hãy tự mình thử »Dưới đây là danh sách tất cả các loại định dạng.
Formatting Types | ||
---|---|---|
:< |
Try it | Left aligns the result (within the available space) |
:> |
Try it | Right aligns the result (within the available space) |
:^ |
Try it | Center aligns the result (within the available space) |
:= |
Try it | Places the sign to the left most position |
:+ |
Try it | Use a plus sign to indicate if the result is positive or negative |
:- |
Try it | Use a minus sign for negative values only |
: |
Try it | Use a space to insert an extra space before positive numbers (and a minus sign before negative numbers) |
:, |
Try it | Use a comma as a thousand separator |
:_ |
Try it | Use a underscore as a thousand separator |
:b |
Try it | Binary format |
:c |
Converts the value into the corresponding Unicode character | |
:d |
Try it | Decimal format |
:e |
Try it | Scientific format, with a lower case e |
:E |
Try it | Scientific format, with an upper case E |
:f |
Try it | Fix point number format |
:F |
Try it | Fix point number format, in uppercase format (show
inf and
nan as INF
and NAN ) |
:g |
General format | |
:G |
General format (using a upper case E for scientific notations) | |
:o |
Try it | Octal format |
:x |
Try it | Hex format, lower case |
:X |
Try it | Hex format, upper case |
:n |
Number format | |
:% |
Try it | Percentage format |
Định dạng chuỗi()
Trước Python 3.6, chúng tôi đã sử dụng phương thức format()
để định dạng chuỗi.
Phương thức format()
vẫn có thể được sử dụng, nhưng chuỗi f nhanh hơn và là cách ưa thích để định dạng chuỗi.
Các ví dụ tiếp theo trong trang này trình bày cách định dạng chuỗi bằng phương thức format()
.
Phương thức format()
cũng sử dụng dấu ngoặc nhọn làm phần giữ chỗ {}
, nhưng cú pháp hơi khác một chút:
Ví dụ
Thêm phần giữ chỗ nơi bạn muốn hiển thị giá:
price = 49
txt = "The price is {} dollars"
print(txt.format(price))
Hãy tự mình thử »Bạn có thể thêm tham số bên trong dấu ngoặc nhọn để chỉ định cách chuyển đổi giá trị:
Ví dụ
Định dạng giá được hiển thị dưới dạng số có hai số thập phân:
txt = "The price is {:.2f} dollars"
Hãy tự mình thử »Kiểm tra tất cả các loại định dạng trong Tham khảo String format() của chúng tôi.
Nhiều giá trị
Nếu bạn muốn sử dụng nhiều giá trị hơn, chỉ cần thêm nhiều giá trị hơn vào phương thức format():
print(txt.format(price, itemno, count))
Và thêm nhiều phần giữ chỗ:
Ví dụ
quantity = 3
itemno = 567
price = 49
myorder = "I want {} pieces of
item number {} for {:.2f} dollars."
print(myorder.format(quantity, itemno, price))
Hãy tự mình thử »Số chỉ mục
Bạn có thể sử dụng số chỉ mục (số bên trong dấu ngoặc nhọn {0}
) để đảm bảo các giá trị được đặt vào đúng chỗ giữ chỗ:
Ví dụ
quantity = 3
itemno = 567
price = 49
myorder = "I want {0} pieces of
item number {1} for {2:.2f} dollars."
print(myorder.format(quantity, itemno, price))
Hãy tự mình thử »Ngoài ra, nếu bạn muốn tham chiếu đến cùng một giá trị nhiều lần, hãy sử dụng số chỉ mục:
Ví dụ
age = 36
name = "John"
txt = "His name is {1}. {1} is {0} years old."
print(txt.format(age,
name))
Hãy tự mình thử »Chỉ mục được đặt tên
Bạn cũng có thể sử dụng các chỉ mục được đặt tên bằng cách nhập tên bên trong dấu ngoặc nhọn {carname}
, nhưng sau đó bạn phải sử dụng tên khi chuyển các giá trị tham số txt.format(carname = "Ford")
:
Ví dụ
myorder = "I have a {carname}, it is a {model}."
print(myorder.format(carname
= "Ford", model = "Mustang"))
Hãy tự mình thử »