Thứ năm, 15/09/2016 | 00:00 GMT+7

Cách định dạng văn bản trong Python 3

Vì các chuỗi thường được tạo thành từ văn bản viết, nên có nhiều trường hợp ta có thể cần kiểm soát tốt hơn giao diện của các chuỗi để làm cho chúng dễ đọc hơn đối với con người thông qua dấu câu, ngắt dòng và thụt lề.

Trong hướng dẫn này, ta sẽ xem xét một số cách ta có thể làm việc với chuỗi Python đảm bảo rằng tất cả văn bản kết quả được định dạng chính xác.

Chuỗi chữ

Đầu tiên ta hãy phân biệt giữa một chuỗi ký tự và một giá trị chuỗi . Một ký tự chuỗi là những gì ta thấy trong mã nguồn của một chương trình máy tính, bao gồm cả dấu ngoặc kép. Giá trị chuỗi là những gì ta nhìn thấy khi gọi hàm print() và chạy chương trình.

Trong phần "Xin chào, Thế giới!" chương trình, chuỗi ký tự là "Hello, World!" trong khi giá trị chuỗi là Hello, World! không có dấu ngoặc kép. Giá trị chuỗi là những gì ta thấy như là kết quả trong cửa sổ terminal khi ta chạy một chương trình Python.

Nhưng một số giá trị chuỗi có thể cần bao gồm dấu ngoặc kép, như khi ta trích dẫn một nguồn. Bởi vì chuỗi ký tự và giá trị chuỗi không tương đương, nên thường cần thêm định dạng bổ sung vào chuỗi ký tự đảm bảo rằng các giá trị chuỗi được hiển thị theo cách ta dự định.

Trích dẫn và Dấu nháy đơn

Bởi vì ta có thể sử dụng dấu ngoặc kép hoặc dấu ngoặc kép trong Python, thật đơn giản để nhúng dấu ngoặc kép trong một chuỗi bằng cách sử dụng dấu ngoặc kép trong một chuỗi được bao bởi dấu ngoặc đơn:

'Sammy says, "Hello!"' 

Hoặc, để sử dụng dấu nháy đơn sở hữu trong một chuỗi được bao bằng dấu ngoặc kép:

"Sammy's balloon is red." 

Theo cách ta kết hợp dấu nháy đơn và dấu nháy kép, ta có thể kiểm soát việc hiển thị dấu ngoặc kép và dấu nháy đơn trong chuỗi của ta .

Nhiều dòng

In chuỗi trên nhiều dòng có thể làm cho văn bản dễ đọc hơn đối với con người. Với nhiều dòng, các chuỗi có thể được group thành văn bản sạch sẽ và có trật tự, được định dạng như một chữ cái hoặc được sử dụng để duy trì dấu ngắt dòng của một bài thơ hoặc lời bài hát.

Để tạo chuỗi kéo dài nhiều dòng, dấu ngoặc kép ba lần ''' hoặc dấu ngoặc kép ba lần """ được sử dụng để bao quanh chuỗi.

''' This string is on  multiple lines within three single  quotes on either side. ''' 
""" This string is on  multiple lines within three double  quotes on either side. """ 

Với dấu ngoặc kép, bạn có thể in chuỗi trên nhiều dòng để làm cho văn bản, đặc biệt là văn bản dài, dễ đọc hơn.

Nhân vật thoát

Một cách khác để định dạng chuỗi là sử dụng ký tự thoát . Tất cả các ký tự thoát đều bắt đầu bằng phím dấu gạch chéo ngược ( \ ) kết hợp với một ký tự khác trong một chuỗi để định dạng chuỗi đã cho theo một cách nhất định.

Dưới đây là danh sách một số ký tự thoát phổ biến:

Nhân vật thoát Cách nó định dạng
\ Dòng mới trong một chuỗi nhiều dòng
\ Gạch chéo ngược
' Dấu nháy đơn hoặc dấu ngoặc kép
" Dấu ngoặc kép
\ n Ngắt dòng
\ t Tab (thụt lề ngang)

Hãy sử dụng một ký tự thoát để thêm dấu ngoặc kép vào ví dụ về dấu ngoặc kép ở trên, nhưng lần này ta sẽ sử dụng dấu ngoặc kép:

print("Sammy says, \"Hello!\"") 
Output
Sammy says, "Hello!"

Bằng cách sử dụng ký tự thoát \" ta có thể sử dụng dấu ngoặc kép để bao quanh một chuỗi bao gồm văn bản được trích dẫn giữa dấu ngoặc kép.

Tương tự, ta có thể sử dụng ký tự thoát \' để thêm dấu nháy đơn trong một chuỗi được đặt trong dấu ngoặc kép:

print('Sammy\'s balloon is red.') 
Output
Sammy's balloon is red.

Bởi vì ta hiện đang sử dụng ký tự thoát, ta có thể có một dấu nháy đơn trong một chuỗi sử dụng dấu nháy đơn.

Khi ta sử dụng dấu ngoặc kép như đã làm ở trên, ta sẽ thấy rằng có một khoảng trắng ở trên cùng và dưới cùng khi ta in chuỗi. Ta có thể loại bỏ những khoảng trắng đó bằng cách sử dụng phím \ Escape ở đầu chuỗi của ta và ở cuối chuỗi trong khi vẫn giữ cho văn bản trong chương trình rất dễ đọc.

"""\ This multi-line string has no space at the top or the bottom when it prints.\ """ 

Tương tự, ta có thể sử dụng \n ký tự thoát để ngắt dòng mà không cần nhấn phím enter hoặc return :

print("This string\nspans multiple\nlines.") 
Output
This string spans multiple lines.

Ta cũng có thể kết hợp các ký tự thoát. Hãy in một chuỗi nhiều dòng và bao gồm khoảng cách tab cho danh sách được chia thành từng khoản, ví dụ:

print("1.\tShark\n2.\tShrimp\n10.\tSquid") 
Output
1. Shark 2. Shrimp 10. Squid

Thụt lề ngang được cung cấp với ký tự \t Escape đảm bảo sự liên kết trong cột thứ hai trong ví dụ trên, làm cho kết quả cực kỳ dễ đọc đối với con người.

Mặc dù ký tự \n Escape hoạt động tốt đối với các ký tự chuỗi ngắn, điều quan trọng là đảm bảo mã nguồn cũng có thể đọc được đối với con người. Trong trường hợp chuỗi dài, cách tiếp cận dấu ngoặc kép đối với chuỗi nhiều dòng thường được ưu tiên hơn.

Các ký tự thoát được sử dụng để thêm định dạng bổ sung cho các chuỗi có thể khó hoặc không thể đạt được. Nếu không có ký tự thoát, bạn sẽ xây dựng chuỗi như thế nào Sammy says, "The balloon's color is red." ?

Chuỗi thô

Điều gì xảy ra nếu ta không muốn định dạng đặc biệt trong chuỗi của bạn ? Ví dụ: ta có thể cần phải so sánh hoặc đánh giá các chuỗi mã máy tính có mục đích sử dụng dấu gạch chéo ngược, vì vậy ta sẽ không muốn Python sử dụng nó như một ký tự thoát.

Một chuỗi thô yêu cầu Python bỏ qua tất cả các định dạng trong một chuỗi, bao gồm các ký tự thoát.

Ta tạo một chuỗi thô bằng cách đặt một r ở trước chuỗi, ngay trước dấu ngoặc kép bắt đầu:

print(r"Sammy says,\"The balloon\'s color is red.\"") 
Output
Sammy says,\"The balloon\'s color is red.\"

Bằng cách xây dựng một chuỗi thô bằng cách sử dụng r ở phía trước một chuỗi nhất định, ta có thể giữ lại dấu gạch chéo ngược và các ký tự khác được sử dụng làm ký tự thoát.

Kết luận

Hướng dẫn này đã trình bày một số cách để định dạng văn bản trong Python 3 thông qua việc làm việc với chuỗi. Bằng cách sử dụng các kỹ thuật như ký tự thoát hoặc chuỗi thô, ta có thể đảm bảo các chuỗi của chương trình của ta được hiển thị chính xác trên màn hình để user cuối có thể dễ dàng đọc tất cả văn bản kết quả .

Tiếp tục tìm hiểu thêm về chuỗi bằng cách xem các hướng dẫn sau:


Tags:

Các tin liên quan

Giới thiệu về cách làm việc với chuỗi trong Python 3
2016-09-15
Hiểu các kiểu dữ liệu trong Python 3
2016-09-14
Python 2 và Python 3: Cân nhắc thực tế
2016-08-17
Cách triển khai các ứng dụng web Python với Khung Micro Chai trên Ubuntu 14.04
2015-10-19
Cách triển khai các ứng dụng web Python với Framework Micro Chai trên CentOS 7
2015-10-19
Cách triển khai ứng dụng Python Web2py với uWSGI và Nginx trên Ubuntu 14.04
2015-03-17
Cách triển khai các ứng dụng Python Web2py với uWSGI và Nginx trên CentOS 7
2015-03-17
Cách xác thực một ứng dụng Python với Twitter bằng Tweepy trên Ubuntu 14.04
2015-02-04
Cách gửi tin nhắn dựa trên các phím định tuyến bằng thư viện RabbitMQ và Puka Python
2014-02-26
Cách đóng gói và phân phối các ứng dụng Python
2014-01-14