Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Python String Formating Mẹo & Thực tiễn tốt nhất This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python String Formatting Tips & Best Practices
Bạn có nhớ Zen of Python và làm thế nào nên có một cách rõ ràng để làm điều gì đó trong Python không? Bạn có thể gãi đầu khi bạn phát hiện ra rằng có bốn cách chính để thực hiện định dạng chuỗi trong Python.
Trong hướng dẫn này, bạn sẽ học được bốn cách tiếp cận chính để định dạng chuỗi trong Python, cũng như điểm mạnh và điểm yếu của chúng. Bạn cũng sẽ nhận được một quy tắc đơn giản về cách chọn cách tiếp cận định dạng chuỗi mục đích chung tốt nhất trong các chương trình của riêng bạn.
Hãy để nhảy ngay vào, vì chúng tôi đã có rất nhiều thứ để che chở. Để có một ví dụ đồ chơi đơn giản để thử nghiệm, hãy để cho rằng bạn đã có các biến sau [hoặc hằng số, thực sự] để làm việc với:
>>>
>>> errno = 50159747054
>>> name = 'Bob'
Dựa trên các biến, bạn muốn tạo một chuỗi đầu ra chứa thông báo lỗi đơn giản:
>>>
'Hey Bob, there is a 0xbadc0ffee error!'
Dựa trên các biến, bạn muốn tạo một chuỗi đầu ra chứa thông báo lỗi đơn giản:
Lỗi đó thực sự có thể làm hỏng một Dev Dev sáng thứ Hai, nhưng chúng tôi ở đây để thảo luận về định dạng chuỗi. Vì vậy, hãy để Lừa làm việc.
#1 Phong cách cũ của chuỗi định dạng chuỗi [% toán tử]
>>>
>>> 'Hello, %s' % name
"Hello, Bob"
Dựa trên các biến, bạn muốn tạo một chuỗi đầu ra chứa thông báo lỗi đơn giản:
Lỗi đó thực sự có thể làm hỏng một Dev Dev sáng thứ Hai, nhưng chúng tôi ở đây để thảo luận về định dạng chuỗi. Vì vậy, hãy để Lừa làm việc.
#1 Phong cách cũ của chuỗi định dạng chuỗi [% toán tử]
>>>
>>> '%x' % errno
'badc0ffee'
Dựa trên các biến, bạn muốn tạo một chuỗi đầu ra chứa thông báo lỗi đơn giản:
>>>
>>> 'Hey %s, there is a 0x%x error!' % [name, errno]
'Hey Bob, there is a 0xbadc0ffee error!'
Dựa trên các biến, bạn muốn tạo một chuỗi đầu ra chứa thông báo lỗi đơn giản:
>>>
>>> 'Hey %[name]s, there is a 0x%[errno]x error!' % {
... "name": name, "errno": errno }
'Hey Bob, there is a 0xbadc0ffee error!'
Dựa trên các biến, bạn muốn tạo một chuỗi đầu ra chứa thông báo lỗi đơn giản:
Lỗi đó thực sự có thể làm hỏng một Dev Dev sáng thứ Hai, nhưng chúng tôi ở đây để thảo luận về định dạng chuỗi. Vì vậy, hãy để Lừa làm việc.
#1 Phong cách cũ của chuỗi định dạng chuỗi [% toán tử]
Các chuỗi trong Python có một hoạt động tích hợp độc đáo có thể được truy cập với toán tử
'Hey Bob, there is a 0xbadc0ffee error!'
8. Điều này cho phép bạn thực hiện định dạng vị trí đơn giản rất dễ dàng. Nếu bạn đã từng làm việc với chức năng kiểu 19 ____ trong C, bạn sẽ nhận ra cách thức hoạt động của nó ngay lập tức. Đây là một ví dụ đơn giản:Tôi đã sử dụng trình xác định định dạng
>>> 'Hello, %s' % name
"Hello, Bob"
0 ở đây để cho Python biết nơi thay thế giá trị của >>> 'Hello, %s' % name
"Hello, Bob"
1, được biểu thị dưới dạng chuỗi.>>>
>>> 'Hello, {}'.format[name]
'Hello, Bob'
Dựa trên các biến, bạn muốn tạo một chuỗi đầu ra chứa thông báo lỗi đơn giản:
>>>
>>> 'Hey {name}, there is a 0x{errno:x} error!'.format[
... name=name, errno=errno]
'Hey Bob, there is a 0xbadc0ffee error!'
Dựa trên các biến, bạn muốn tạo một chuỗi đầu ra chứa thông báo lỗi đơn giản:
Lỗi đó thực sự có thể làm hỏng một Dev Dev sáng thứ Hai, nhưng chúng tôi ở đây để thảo luận về định dạng chuỗi. Vì vậy, hãy để Lừa làm việc.
#1 Phong cách cũ của chuỗi định dạng chuỗi [% toán tử]
Các hoạt động định dạng được mô tả ở đây thể hiện một loạt các kỳ quặc dẫn đến một số lỗi phổ biến [chẳng hạn như không hiển thị chính xác các bộ dữ liệu và từ điển]. Sử dụng các chuỗi chữ được định dạng mới hơn hoặc giao diện str.format [] giúp tránh các lỗi này. Những lựa chọn thay thế này cũng cung cấp các phương pháp tiếp cận mạnh mẽ, linh hoạt và mở rộng hơn để định dạng văn bản. [Nguồn]
Đây là lý do tại sao cá nhân tôi cố gắng gắn bó với
>>> 'Hello, %s' % name
"Hello, Bob"
7 cho mã mới di chuyển về phía trước. Bắt đầu với Python 3.6, có một cách khác để định dạng chuỗi của bạn. Tôi sẽ nói với bạn tất cả về nó trong phần tiếp theo.#3 Chuỗi nội suy / F-Strings [Python 3.6+]
Python 3.6 đã thêm một cách tiếp cận định dạng chuỗi mới được gọi là chuỗi chữ được định dạng hoặc các chuỗi F F. Cách định dạng chuỗi mới này cho phép bạn sử dụng các biểu thức python nhúng bên trong các hằng số chuỗi. Dưới đây, một ví dụ đơn giản để cung cấp cho bạn cảm giác về tính năng:
>>>
Như bạn có thể thấy, điều này có tiền tố hằng số chuỗi với chữ cái ____ ____ 37 Cú pháp định dạng mới này là mạnh mẽ. Bởi vì bạn có thể nhúng các biểu thức python tùy ý, bạn thậm chí có thể thực hiện số học nội tuyến với nó. Kiểm tra ví dụ này:
>>>
>>> a = 5
>>> b = 10
>>> f'Five plus ten is {a + b} and not {2 * [a + b]}.'
'Five plus ten is 15 and not 30.'
________số 8
Như bạn có thể thấy, điều này có tiền tố hằng số chuỗi với chữ cái ____ ____ 37 Cú pháp định dạng mới này là mạnh mẽ. Bởi vì bạn có thể nhúng các biểu thức python tùy ý, bạn thậm chí có thể thực hiện số học nội tuyến với nó. Kiểm tra ví dụ này:
>>>
'Hey Bob, there is a 0xbadc0ffee error!'
0________số 8
>>>
'Hey Bob, there is a 0xbadc0ffee error!'
1
________số 8
>>>
'Hey Bob, there is a 0xbadc0ffee error!'
2________số 8
>>>
'Hey Bob, there is a 0xbadc0ffee error!'
3________số 8
Như bạn có thể thấy, điều này có tiền tố hằng số chuỗi với chữ cái ____ ____ 37 Cú pháp định dạng mới này là mạnh mẽ. Bởi vì bạn có thể nhúng các biểu thức python tùy ý, bạn thậm chí có thể thực hiện số học nội tuyến với nó. Kiểm tra ví dụ này:
Chuỗi được định dạng là một tính năng phân tích cú pháp Python chuyển đổi chuỗi F thành một loạt các hằng số và biểu thức chuỗi. Sau đó, họ được tham gia để xây dựng chuỗi cuối cùng.
Hãy tưởng tượng bạn đã có chức năng
>>> '%x' % errno
'badc0ffee'
8 sau đây có chứa chuỗi F:>>>
'Hey Bob, there is a 0xbadc0ffee error!'
4________số 8
Như bạn có thể thấy, điều này có tiền tố hằng số chuỗi với chữ cái ____ ____ 37 Cú pháp định dạng mới này là mạnh mẽ. Bởi vì bạn có thể nhúng các biểu thức python tùy ý, bạn thậm chí có thể thực hiện số học nội tuyến với nó. Kiểm tra ví dụ này:
>>>
'Hey Bob, there is a 0xbadc0ffee error!'
5________số 8
Như bạn có thể thấy, điều này có tiền tố hằng số chuỗi với chữ cái ____ ____ 37 Cú pháp định dạng mới này là mạnh mẽ. Bởi vì bạn có thể nhúng các biểu thức python tùy ý, bạn thậm chí có thể thực hiện số học nội tuyến với nó. Kiểm tra ví dụ này:
Chuỗi được định dạng là một tính năng phân tích cú pháp Python chuyển đổi chuỗi F thành một loạt các hằng số và biểu thức chuỗi. Sau đó, họ được tham gia để xây dựng chuỗi cuối cùng.
Hãy tưởng tượng bạn đã có chức năng
>>> '%x' % errno
'badc0ffee'
8 sau đây có chứa chuỗi F:>>>
'Hey Bob, there is a 0xbadc0ffee error!'
6________số 8
>>>
'Hey Bob, there is a 0xbadc0ffee error!'
7________số 8
Như bạn có thể thấy, điều này có tiền tố hằng số chuỗi với chữ cái ____ ____ 37 Cú pháp định dạng mới này là mạnh mẽ. Bởi vì bạn có thể nhúng các biểu thức python tùy ý, bạn thậm chí có thể thực hiện số học nội tuyến với nó. Kiểm tra ví dụ này:
Hãy tưởng tượng bạn đã có chức năng
>>> '%x' % errno
'badc0ffee'
8 sau đây có chứa chuỗi F:Khi bạn tháo rời chức năng và kiểm tra những gì diễn ra sau hậu trường, bạn sẽ thấy rằng chuỗi F trong hàm sẽ được chuyển thành một thứ tương tự như sau:
- Có lẽ đáng ngạc nhiên, có nhiều hơn một cách để xử lý định dạng chuỗi trong Python.
- Mỗi phương pháp có ưu và nhược điểm cá nhân của nó. Trường hợp sử dụng của bạn sẽ ảnh hưởng đến phương pháp bạn nên sử dụng.
- Nếu bạn gặp khó khăn trong việc quyết định phương pháp định dạng chuỗi nào để sử dụng, hãy thử quy tắc định dạng chuỗi Python của chúng tôi.
Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Python String Formating Mẹo & Thực tiễn tốt nhất This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python String Formatting Tips & Best Practices