Trong Python, bạn có một số tùy chọn để định dạng chuỗi của mình. Trong bài viết này, tôi sẽ đi qua str.format()
chuỗi ký tự được định dạng và chuỗi mẫu.
Nhưng trước tiên, chúng ta hãy xem những gì được coi là “cách cũ” của định dạng chuỗi.
Định dạng % chuỗi trong Python là gì?
Một trong những cách cũ hơn để định dạng chuỗi trong Python là sử dụng %
nhà điều hành.
Đây là cú pháp cơ bản:
"This is a string %s" % "string value goes here"
Bạn có thể tạo chuỗi và sử dụng %s
bên trong chuỗi hoạt động như một trình giữ chỗ. Sau đó, bạn có thể viết %
theo sau là giá trị chuỗi thực mà bạn muốn sử dụng.
Đây là một ví dụ cơ bản sử dụng %
định dạng chuỗi.
print("Hi, my name is %s" % "Jessica")

Phương pháp này thường được gọi là cách “cũ hơn” vì Python 3 đã giới thiệu str.format()
cùng với các chuỗi ký tự được định dạng.
cái gì str.format()
phương pháp trong Python?
Đây là cú pháp cơ bản cho str.format()
phương pháp:
"template string {}".format(arguments)
Bên trong chuỗi mẫu, chúng ta có thể sử dụng {}
đóng vai trò giữ chỗ cho các đối số. Các đối số là các giá trị sẽ được hiển thị trong chuỗi.
Trong ví dụ này, chúng tôi muốn in "Hello, my name is Jessica. I am a musician turned programmer."
Trong chuỗi, chúng ta sẽ có tổng cộng ba {}
sẽ đóng vai trò giữ chỗ cho các giá trị của Jessica, nhạc sĩ và lập trình viên. Chúng được gọi là các trường định dạng.
"Hello, my name is {}. I am a {} turned {}."
Bên trong các dấu ngoặc đơn cho str.format()
chúng tôi sẽ sử dụng các giá trị của “Jessica”, “nhạc sĩ” và “lập trình viên”.
.format("Jessica", "musician", "programmer")
Đây là mã hoàn chỉnh và câu in:
print("Hello, my name is {}. I am a {} turned {}.".format("Jessica", "musician", "programmer"))

đối số vị trí
Bạn có thể truy cập giá trị của các đối số này bằng cách sử dụng số chỉ mục bên trong {}
.
Trong ví dụ này, chúng ta có hai đối số của "trumpet"
và "drums"
bên trong .format()
.
.format("trumpet", "drums")
Chúng ta có thể truy cập các giá trị đó bên trong chuỗi bằng cách tham khảo các số chỉ mục. {0}
đề cập đến đối số đầu tiên của "trumpet"
và {1}
đề cập đến đối số thứ hai của "drums"
.
"Steve plays {0} and {1}."
Đây là mã hoàn chỉnh và câu in:
print("Steve plays {0} and {1}.".format("trumpet", "drums"))

Chúng ta có thể sửa đổi ví dụ này và chuyển các số chỉ mục trong chuỗi. Bạn sẽ nhận thấy rằng câu đã thay đổi và vị trí của các đối số đã thay đổi.
print("Steve plays {1} and {0}.".format("trumpet", "drums"))

Đối số từ khóa
Những lập luận này bao gồm một key
value
đôi. Chúng ta có thể truy cập vào value
của lập luận bằng cách sử dụng key
bên trong {}
.
Trong ví dụ này, chúng ta có hai khóa được gọi là organization
và adjective
. Chúng ta sẽ sử dụng các phím đó bên trong chuỗi.
"{organization} is {adjective}!"
Bên trong .format()
chúng ta có key
value
cặp.
.format(organization="freeCodeCamp", adjective="awesome")
Đây là mã hoàn chỉnh và câu in.
print("{organization} is {adjective}!".format(organization="freeCodeCamp", adjective="awesome"))

Cách kết hợp các đối số từ khóa và vị trí
bên trong str.format()
bạn có thể kết hợp các đối số từ khóa và vị trí.
Trong ví dụ này, chúng ta sẽ tạo một câu chuyện ngắn về việc đi đến Disneyland.
Đầu tiên chúng ta sẽ tạo một vài biến cho tên, số, tính từ và chuyến đi Disneyland.
name = "Sam"
adjective = "amazing"
number = 200
disney_ride = "Space Mountain"
Sau đó, chúng tôi muốn tạo chuỗi của mình bằng cách sử dụng các đối số từ khóa và vị trí. Tôi sẽ thêm \n
để yêu cầu máy tính tạo một dòng mới sau mỗi câu.
"I went to {0} with {name}.\nIt was {adjective}.\nWe waited for {hours} hours to ride {ride}."
Bên trong dấu ngoặc đơn cho str.format()
chúng tôi sẽ gán các biến của chúng tôi cho các khóa của name
, adjective
, hours
và disney_ride
. {0}
sẽ có giá trị là "Disneyland"
.
.format("Disneyland", name=name, adjective=adjective, hours=number, ride=disney_ride)
Đây là mã hoàn chỉnh và câu in:
name = "Sam"
adjective = "amazing"
number = 200
disney_ride = "Space Mountain"
print("I went to {0} with {name}.\nIt was {adjective}.\nWe waited for {hours} hours to ride {ride}."
.format("Disneyland", name=name, adjective=adjective, hours=number, ride=disney_ride))

Chuỗi ký tự được định dạng là gì?
Các chuỗi ký tự được định dạng (hoặc chuỗi f) cho phép bạn bao gồm các biểu thức bên trong chuỗi của mình. Ngay trước chuỗi bạn đặt một f
hoặc F
cho máy tính biết bạn muốn sử dụng một f-string
.
Đây là cú pháp cơ bản:
variable = "some value"
f"this is a string {variable}"
Đây là một ví dụ cơ bản in câu Maria and Jessica have been friends since grade school.
name = "Jessica"
print(f"Maria and {name} have been friends since grade school.")
Nó hoạt động giống như vậy nếu tôi sử dụng vốn F
trước chuỗi.
name = "Jessica"
print(F"Maria and {name} have been friends since grade school.")

Bạn cũng có thể sử dụng một f-string
để định dạng dữ liệu từ một từ điển.
Trong ví dụ này, chúng ta có một từ điển đại diện cho thứ hạng cao nhất của các đội bóng rổ nam của trường đại học và số trận họ thắng trong tổng số 32 trận.
rankings = {"Gonzaga": 31, "Baylor": 28, "Michigan": 25, "Illinois": 24, "Houston": 21}
Chúng ta có thể sử dụng một for loop
và items()
phương pháp để đi qua từng key value
cặp của rankings
từ điển.
for team, score in rankings.items():
Bên trong for loop
chúng ta có thể sử dụng một f-string
để định dạng kết quả in ra.
Việc sử dụng :
vì {team:10}
và {score:10d}
yêu cầu máy tính tạo một trường rộng 10 ký tự. Điều này sẽ tạo ra các cột chẵn cho dữ liệu.
Các d
bên trong đây {score:10d}
đề cập đến một số nguyên thập phân.
print(f"{team:10} ==> {score:10d}")
Đây là mã đầy đủ và đầu ra được in:
rankings = {"Gonzaga": 31, "Baylor": 28, "Michigan": 25, "Illinois": 24, "Houston": 21}
for team, score in rankings.items():
print(f"{team:10} ==> {score:10d}")

Chuỗi mẫu là gì?
Chuỗi mẫu là các chuỗi Python sử dụng trình giữ chỗ cho các giá trị thực.
Đây là cú pháp cơ bản:
Template("$placeholder").substitute(placeholder="real value")
Hãy cùng xem một ví dụ để hiểu rõ hơn về cách thức hoạt động của nó.
Trong ví dụ này, chúng tôi muốn in I love to learn with freeCodeCamp!
sử dụng chuỗi mẫu.
Để sử dụng các chuỗi mẫu, trước tiên bạn sẽ phải nhập Template
class từ thư viện tiêu chuẩn.
from string import Template
Sau đó, bạn có thể sử dụng Template
class và cung cấp một chuỗi bên trong dấu ngoặc đơn. Chúng tôi sẽ đặt một $
ở đằng trước name
mà sau này sẽ được thay thế bằng giá trị thực.
Template("I love to learn with $name!")
sau đó chúng tôi thêm .substitute
vào mẫu và gán giá trị của freeCodeCamp
đến name
.
.substitute(name="freeCodeCamp")
Đây là mã đầy đủ và đầu ra được in:
from string import Template
print(Template("I love to learn with $name!").substitute(name="freeCodeCamp"))

Phần kết luận
Có nhiều cách để định dạng chuỗi của bạn trong Python.
Cách cũ hơn để định dạng chuỗi của bạn là sử dụng %
nhà điều hành.
"This is a string %s" % "string value goes here"
%s
hoạt động như một trình giữ chỗ cho giá trị thực. Bạn đặt giá trị thực sau %
nhà điều hành.
Phương pháp này thường được gọi là cách “cũ hơn” vì Python 3 đã giới thiệu str.format()
và chuỗi ký tự được định dạng (chuỗi f).
bên trong str.format()
phương pháp, bạn sử dụng {}
cho trình giữ chỗ và đặt các giá trị thực bên trong dấu ngoặc đơn. Phương pháp này có thể nhận các đối số vị trí và từ khóa.
"template string {}".format(arguments)
Các chuỗi ký tự được định dạng (hoặc chuỗi f) cho phép bạn bao gồm các biểu thức bên trong chuỗi của mình. Ngay trước chuỗi bạn đặt một f
hoặc F
cho máy tính biết bạn muốn sử dụng một f-string
.
variable = "some value"
f"this is a string {variable}"
Bạn cũng có thể sử dụng Chuỗi mẫu bằng cách nhập Template
class từ thư viện tiêu chuẩn. Chuỗi mẫu là các chuỗi Python sử dụng trình giữ chỗ cho các giá trị thực.
Template("$placeholder").substitute(placeholder="real value")
Tôi hy vọng bạn thấy bài viết này hữu ích và chúc may mắn trên hành trình Python của bạn.