Có một số cách để trình biểu diễn kết quả của một chương trình, dữ liệu có thể được in ở dạng có thể đọc được hoặc ghi vào tệp để sử dụng trong tương lai. Đôi khi người dùng thường muốn kiểm soát định dạng output, chỉ in các giá trị được phân tách bằng dấu cách. Có một số cách để định dạng output như sau.
- Để sử dụng các ký tự chuỗi được định dạng, hãy bắt đầu một chuỗi bằng f hoặc F trước dấu mở ngoặc kép hoặc 3 dấu mở ngoặc kép.
- Phương thức str.format() của các chuỗi giúp người dùng có được một kết quả tốt hơn.
- Người dùng có thể xử lý tất cả các chuỗi bằng cách sử dụng các hoạt động cắt và nối chuỗi để tạo bất kỳ bố cục nào mà người dùng muốn. Kiểu chuỗi có một số phương thức thực hiện các thao tác hữu ích để đưa chuỗi vào chiều rộng cột đã cho.
Nội dung chính
1. Định dạng kết quả sử dụng toán tử String modulo (%):
Các toán tử % cũng có thể được sử dụng để định dạng chuỗi. Nó thông dịch đối số bên trái giống như chuỗi định dạng hàm printf() để áp dụng cho đối số bên phải. Trong Python, không có hàm printf() nhưng chức năng cốt lõi của hàm printf cũ vẫn có trong Python. Với mục đích này, toán tử modulo % bị lớp chuỗi quá tải để thực hiện định dạng chuỗi. Do đó, nó thường được gọi là toán tử modulo chuỗi (hoặc đôi khi còn được gọi là toán tử modulus).
Toán tử modulo chuỗi (%) vẫn có sẵn trong Python (3.x) và người dùng đang sử dụng nó một cách rộng rãi. Nhưng ngày nay phong cách định dạng cũ bị loại bỏ khỏi ngôn ngữ này.
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
# Python program showing how to use
# string modulo operator(%) to print
# fancier output
# print integer and float value
print("Cafedevn : % 2d, Portal : % 5.2f" %(1, 05.333))
# print integer value
print("Total students : % 3d, Boys : % 2d" %(240, 120))
# print octal value
print("% 7.3o"% (25))
# print exponential value
print("% 10.3E"% (356.08977))
Kết quả:
Cafedevn : 1, Portal : 5.33
Total students : 240, Boys : 120
031
3.561E+02
Có hai toán tử modulo chuỗi trong ví dụ trên là: “% 2d” và “% 5.2f” Cú pháp chung cho một trình giữ định dạng là:
% [flags] [width] [. precision]
Chúng ta hãy xem các chuỗi format trong ví dụ của chúng tôi.
- Chuỗi format đầu tiên, “% 2d”, được sử dụng cho thành phần đầu tiên của bộ dữ liệu của chúng ta, tức là số nguyên 1. Số đó sẽ được in với 2 ký tự. Vì 1 chỉ bao gồm một chữ số, kết quả được đệm với 1 khoảng trống ở đầu tiên.
- Chuỗi format thứ hai “% 8.2f” là một mô tả định dạng cho một số thực. Giống như các Chuỗi format khác, nó được giới thiệu với kí tự %, theo sau là tất cả số các chữ số mà chuỗi chứa. Số này bao gồm dấu thập phân và tất cả các chữ số, tức là các số trước và sau dấu thập phân.
- Số thực 05.333 của chúng ta phải được định dạng với 5 ký tự. Phần thập phân của số hoặc độ chính xác được đặt thành 2, tức là số theo sau dấu”.” trong trình giữ chỗ của chúng ta. Cuối cùng, ký tự cuối cùng là f của Chuỗi format của chúng ta là viết tắt của số thực (float).
2. Định dạng output bằng phương thức format():
Phương thức format() đã được thêm vào Python (2.6). Phương thức định dạng của các chuỗi đòi hỏi nhiều nỗ lực thủ công. Người dùng sử dụng dấu {} để đánh dấu nơi một biến sẽ được thay thế và có thể cung cấp các chỉ thị định dạng chi tiết, nhưng người dùng cũng cần cung cấp thông tin cần định dạng. Phương pháp này cho phép chúng ta ghép các phần tử trong một kết quả thông qua định dạng vị trí. Lấy ví dụ:
Code 1:
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------
# Python program showing
# use of format() method
# using format() method
print('I love {} for "{}!"'.format('Cafedevn', 'Cafedevn'))
# using format() method and refering
# a position of the object
print('{0} and {1}'.format('Cafedevn', 'Portal'))
print('{1} and {0}'.format('Cafedevn', 'Portal'))
Kết quả:
I love Cafedevn for "Cafedevn!"
Cafedevn and Portal
Portal and Cafedevn
Dấu ngoặc và ký tự bên trong chuỗi chúng ta cần in (được gọi là thuộc tính định dạng) được thay thế bằng các đối tượng được truyền vào phương thức format(). Một số trong ngoặc có thể được sử dụng để chỉ vị trí của đối tượng được truyền vào phương thức format().
Code 2:
# Python program showing
# a use of format() method
# combining positional and keyword arguments
print('Number one portal is {0}, {1}, and {other}.'
.format('Cafedevn', 'For', other ='Cafedevn'))
# using format() method with number
print("Cafedevn :{0:2d}, Portal :{1:8.2f}".
format(12, 00.546))
# Changing positional argument
print("Second argument: {1:3d}, first one: {0:7.2f}".
format(47.42, 11))
print("Cafedevn: {a:5d}, Portal: {p:8.2f}".
format(a = 453, p = 59.058))
Kết quả:
Number one portal is Cafedevn, For, and Cafedevn.
Cafedevn :12, Portal : 0.55
Second argument: 11, first one: 47.42
Cafedevn: 453, Portal: 59.06
Code 3:
# Python program to
# show format () is
# used in dictionary
tab = {'Cafedevn': 4127, 'for': 4098, 'geek': 8637678}
# using format() in dictionary
print('Cafedevn: {0[geeks]:d}; For: {0[for]:d}; '
'Cafedevn: {0[geek]:d}'.format(tab))
data = dict(fun ="CafedevnForCafedevn", adj ="Portal")
# using format() in dictionary
print("I love {fun} computer {adj}".format(**data))
Kết quả:
Cafedevn: 4127; For: 4098; Cafedevn: 8637678
I love CafedevnForCafedevn computer Portal
3. Định dạng output bằng phương thức chuỗi:
Trong kết quả này được định dạng bằng cách sử dụng các hoạt động cắt và nối chuỗi. Kiểu chuỗi có một số phương thức giúp định dạng kết quả theo cách dễ hiểu hơn. Một số phương thức giúp cho việc định dạng một kết quả là str.ljust(), str.rjust(), str.centre().
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
# Python program to
# format a output using
# string() method
cstr = "I love cafedev.vn"
# Printing the center aligned
# string with fillchr
print ("Center aligned string with fillchr: ")
print (cstr.center(40, '#'))
# Printing the left aligned
# string with "-" padding
print ("The left aligned string is : ")
print (cstr.ljust(40, '-'))
# Printing the right aligned string
# with "-" padding
print ("The right aligned string is : ")
print (cstr.rjust(40, '-'))
Kết quả:
Center aligned string with fillchr:
##########I love cafedev.vn##########
The left aligned string is :
I love cafedev.vn--------------------
The right aligned string is :
--------------------I love cafedev.vn
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!