Thứ năm, 10/09/2020 | 00:00 GMT+7

Cách sử dụng f-string để tạo chuỗi trong Python 3

Chuỗi Python là chuỗi ký tự và ký hiệu có độ dài thay đổi. Chuỗi cho phép chương trình của bạn thao tác và theo dõi văn bản và cũng hiển thị văn bản đó cho user của bạn.

Python bao gồm một số phương thức để xây dựng chuỗi bao gồm kiểu định dạng % và phương thức str.format() . Phương thức str.format() mới hơn kiểu % -format và được trình bày chi tiết trongCách sử dụng bộ định dạng chuỗi trong Python 3 . Định dạng f-string là phương pháp định dạng chuỗi mới nhất trong Python và cung cấp các tiện ích, chẳng hạn như sử dụng các biểu thức bên trong chuỗi, vốn không khả dụng trong kiểu % -formatting hoặc phương thức str.format() .

Trong hướng dẫn này, bạn sẽ học cách sử dụng chuỗi f của Python 3 để tạo chuỗi động.

Yêu cầu

Để tận dụng tối đa hướng dẫn này, bạn nên làm quen với lập trình bằng Python 3. Bạn có thể xem lại các hướng dẫn này để biết thông tin cơ bản cần thiết:

Sử dụng các biến trong chuỗi f

Các chương trình thường cần thay thế một biến thành một chuỗi. Chuỗi f của Python cung cấp một cách thuận tiện để ta thực hiện việc này. Hãy xem xét một ví dụ:

ocean_description = "deep blue" print(f"The ocean is {ocean_description} today") 

Nếu ta chạy mã này, ta sẽ nhận được kết quả như sau:

Output
The ocean is deep blue today

Đầu tiên, ta liên kết chuỗi deep blue với một biến có tên là ocean_description . Trên dòng tiếp theo, ta kích hoạt định dạng chuỗi f bằng cách đặt trước một chuỗi bằng f . f-string diễn giải các biểu thức bên trong ký tự {} dưới dạng Python. Vì vậy, bằng cách nói {ocean_description} , ta đang hướng dẫn Python chèn giá trị của biến ocean_description vào chuỗi của ta . Sau đó, chuỗi kết quả được in ra: The ocean is deep blue today .

Sử dụng biểu thức tùy ý trong chuỗi f

Trong phần trước, ta đã học cách thay thế một biến thành một chuỗi f. f-string cũng cho phép thay thế các biểu thức Python tùy ý:

print(f"1 + 1 = {1 + 1}") 

Nếu ta chạy mã này, ta sẽ nhận được kết quả như sau:

Output
1 + 1 = 2

Trong ví dụ này, ta lại kích hoạt định dạng chuỗi f bằng cách thêm tiền tố f vào một chuỗi. Bên trong các ký tự {} , ta bao gồm một biểu thức Python hợp lệ là 1 + 1 . Kết quả cuối cùng của biểu thức đó là 2 , được đưa vào chuỗi cuối cùng được in ra.

Chỉ có thể sử dụng bất kỳ biểu thức Python hợp lệ nào trong một chuỗi f. Trong ví dụ tiếp theo, ta sẽ chứng minh việc truy cập một giá trị từ điển bên trong chuỗi f:

ocean_dict = {"shark": "fish"} print(f"A shark is a kind of {ocean_dict['shark']}") 

Ta sẽ nhận được kết quả như sau:

Output
A shark is a kind of fish

Trên dòng đầu tiên, ta xác định một từ điển với một cặp khóa / giá trị duy nhất: shark key được ánh xạ tới fish giá trị. Trên dòng tiếp theo, ta nhúng biểu thức ocean_dict['shark'] vào bên trong {} ký tự trong một chuỗi f. Kết quả của biểu thức nhúng đó là fish , có trong kết quả .

Bao gồm các repr của một đối tượng

Theo mặc định, f-string sẽ buộc các đối tượng Python được bao gồm thành các chuỗi để các đối tượng có thể được tạo thành một phần của chuỗi cuối cùng. Theo mặc định, Python sử dụng phương thức __str__ được xác định trên các đối tượng để buộc chúng thành chuỗi. Các đối tượng Python dựng sẵn (ví dụ: danh sách , từ điển , số nguyên, phao) bao gồm các phương thức __str__ được định nghĩa để quá trình ép buộc diễn ra liền mạch.

Đôi khi, sẽ hữu ích khi sử dụng một đại diện thay thế của đối tượng trong chuỗi được tạo. f-string bao gồm một chỉ thị cho phép repr của một đối tượng Python được đưa vào kết quả cuối cùng. Các repr của một đối tượng Python là một mô tả gỡ lỗi của đối tượng Python nhất định.

Hãy xem xét một ví dụ để phân biệt giữa __str__repr rõ ràng hơn. Để gọi repr trên biến, ta thêm !r vào cuối biểu thức:

from datetime import datetime  now = datetime.now() print(f"{now}") print(f"{now!r}") 

Nếu ta chạy mã này, ta nhận được kết quả như sau:

Output
2020-08-22 18:23:22.233108 datetime.datetime(2020, 8, 22, 18, 23, 22, 233108)

Lưu ý: Nói chung, kết quả của bạn sẽ chứa văn bản liên quan đến thời gian hiện tại trên máy tính của bạn. Thời gian trên máy tính của bạn sẽ khác với thời gian hiển thị trong kết quả mẫu.

Trong ví dụ này, ta sử dụng mô-đun datetime để lấy một đối tượng đại diện cho thời gian hiện tại và liên kết nó với một biến có tên là now . Tiếp theo, now ta in ra hai lần bằng hai chuỗi f khác nhau. Trong chuỗi f đầu tiên, ta không bao gồm bất kỳ công cụ sửa đổi bổ sung nào và vì vậy Python sử dụng biểu diễn __str__ của thời gian hiện tại.

Trong ví dụ thứ hai, ta thêm sửa đổi !r vào cuối biểu thức được nhúng trong chuỗi f. !r hướng dẫn Python gọi repr now để tạo biểu diễn chuỗi. Nói chung, repr in thông tin gỡ lỗi phù hợp hơn với trình thông dịch Python tương tác. Trong trường hợp này, ta nhận được thông tin chi tiết về đối tượng datetime đã được ràng buộc cho đến now .

Sử dụng thông số định dạng

f-string cung cấp các công cụ sửa đổi đặc điểm định dạng để kiểm soát bổ sung các chuỗi đã xuất. Bổ những định dạng đặc tả được bắt đầu bởi một : Ví dụ:

{expression:format_spec} 

Công cụ sửa đổi phần trăm là một ví dụ về một công cụ sửa đổi có sẵn:

decimal_value = 18.12 / 100.0 print(f"{decimal_value:.1%}") 

Nếu ta chạy mã này, ta sẽ nhận được kết quả như sau:

Output
18.1%

Đầu tiên, ta liên kết decimal_value với 0.1812 (kết quả của 18.12 / 100.0 ). Sau đó, ta sử dụng một chuỗi f để in ra decimal_value dưới dạng phần trăm. : Bắt đầu phần thông số định dạng. .1 cho biết rằng ta muốn xuất ra số với độ chính xác 1 dấu thập phân. % Là loại thông số định dạng mà ta muốn sử dụng. Thông % định dạng % nhân số với 100 và bao gồm biểu tượng % trong kết quả . Vì vậy, kết quả cuối cùng là 18.12% ( 0.1812 * 100 làm tròn đến 1 chữ số thập phân và ký hiệu % ).

Thông số kỹ thuật định dạng cho phép bạn làm nhiều việc hơn là in ra tỷ lệ phần trăm; chúng là một ngôn ngữ thu nhỏ phức tạp của riêng chúng. Ví dụ, chúng cho phép bạn bao gồm các ký tự đệm xung quanh một biểu thức hoặc in các số dưới dạng ký hiệu khoa học.

Bạn có thể sử dụng phần này của tài liệu Python để tìm hiểu thêm về các thông số định dạng có sẵn của Python.

Đối phó với các nhân vật đặc biệt

Như ta đã thấy, các ký tự {} có ý nghĩa đặc biệt trong chuỗi f. Nếu ta muốn in một ký tự { hoặc } theo nghĩa đen, ta cần phải loại bỏ chúng bằng cách thêm các ký tự { hoặc } bổ sung. Hãy xem xét ví dụ sau:

print(f"{{}}") 

Nếu ta chạy mã này, ta sẽ nhận được kết quả như:

Output
{}

Để in ra một chữ {} , ta cần phải nhân đôi cả dấu { và dấu } vì những ký tự này thường có ý nghĩa đặc biệt.

Kết luận

f-string là một cách mạnh mẽ và thuận tiện để xây dựng các chuỗi một cách linh động và ngắn gọn trong Python. Trong hướng dẫn này, bạn đã học cách thay thế các biến và biểu thức thành chuỗi f, sử dụng các bộ chỉ định chuyển đổi kiểu và thoát các ký tự đặc biệt bằng chuỗi f.

Mô-đun string hiển thị các lớp và tiện ích bổ sung mà ta chưa đề cập trong hướng dẫn này. Đến đây bạn đã có đường cơ sở, bạn có thể sử dụng tài liệu của module string để tìm hiểu thêm về các lớp và tiện ích có sẵn khác.

Ngoài ra, để tìm hiểu thêm về Python, hãy xem trang nội dung Python hoặc loạt bài Cách viết mã trong Python 3 của ta .


Tags:

Các tin liên quan

Cách chuyển đổi số nguyên thành chuỗi trong Python 3
2020-09-03
Cách chuyển đổi chuỗi thành số nguyên trong Python 3
2020-09-03
Cách sử dụng module bộ sưu tập trong Python 3
2020-08-19
Cách chuyển đổi kiểu dữ liệu trong Python 3
2020-08-07
Cách sử dụng hàm bản đồ Python
2020-08-03
Cách sử dụng quy trình con để chạy các chương trình bên ngoài trong Python 3
2020-07-30
Làm thế nào để đánh lừa một mạng neural trong Python 3
2020-07-30
Cách sử dụng hàm bộ lọc Python
2020-07-24
Cách sử dụng module pathlib để thao tác đường dẫn hệ thống tệp trong Python 3
2020-07-15
Cách tạo Slackbot bằng Python trên Ubuntu 20.04
2020-06-30