Contents
- 1 Python f-string
- 2 Định dạng string
- 3 Biểu thức f-string
- 4 f-string dictionaries
- 5 f-string debug
- 6 f-string multiline
- 7 f-string gọi hàm
- 8 f-string object
- 9 f-string kí tự escape
- 10 f-string định dạng date time
- 11 f-string định dạng float
- 12 f-string định dạng độ rộng
- 13 f-string căn lề
- 14 f-string biểu diễn số
Bài hướng dẫn này chỉ ra cách định dạng chuỗi trong Python bằng f-string.
Python f-string
Python f-string là cú pháp Python mới nhất để thực hiện định dạng chuỗi. f-string được support từ Python 3.6. f-string cung cấp cách định dạng chuỗi nhanh hơn, dễ đọc hơn, ngắn gọn hơn và ít mắc lỗi hơn trong Python.
f-string có tiền tố f và sử dụng dấu ngoặc {} để đánh giá giá trị.
Định dạng string
Ví dụ sau tổng hợp các cách định dạng string trong Python
formatting_strings.py
name = 'Peter' age = 23 print('%s is %d years old' % (name, age)) print('{} is {} years old'.format(name, age)) print(f'{name} is {age} years old')
Trong ví dụ, chúng ta định dạng string với 2 biến name và age.
print('%s is %d years old' % (name, age))
Đây là cách định dạng chuỗi cũ trong Python, sử dụng toán tử % và định dạng chuỗi classic chỉ định như %s và %d.
print('{} is {} years old'.format(name, age))
Kể từ Python 3.0, hàm format () đã được giới thiệu để cung cấp các tùy chọn định dạng nâng cao.
print(f'{name} is {age} years old')
f-string được support từ Python 3.6, f-string có tiền tố f và sử dụng dấu ngoặc {} để đánh giá giá trị.
C:\Programs\Python\Python37>python.exe formatting_strings.py Peter is 23 years old Peter is 23 years old Peter is 23 years old
Kết quả cả 3 cách định dạng string đều cho kết quả giống nhau.
Biểu thức f-string
Chúng ta add biểu thức trong ngoặc {}
expressions.py
bags = 3 apples_in_bag = 12 print(f'There are total of {bags * apples_in_bag} apples')
Biểu thức bags*apples_in_bag được đặt trong ngoặc {}
Kết quả:
C:\Programs\Python\Python37>python.exe expressions.py There are total of 36 apples
f-string dictionaries
Chúng ta có thể sử dụng dictionary trong f-string
dicts.py
user = {'name': 'John Doe', 'occupation': 'gardener'} print(f"{user['name']} is a {user['occupation']}")
Ví dụ này đánh giá dictionary trong f-string
Kết quả:
C:\Programs\Python\Python37>python.exe dicts.py John Doe is a gardener
f-string debug
Kể từ version Python 3.8 support tự đánh giá giá trị biểu thức bằng toán tử =
debug.py
import math x = 0.8 print(f'{math.cos(x) = }') print(f'{math.sin(x) = }')
Ví dụ hiển thị giá trị hàm cos và sin ở mode debug.
Kết quả:
C:\Programs\Python\Python38-32>python.exe debug.py math.cos(x) = 0.6967067093471654 math.sin(x) = 0.7173560908995228
f-string multiline
Chúng ta có thể làm việc với multi string
multiline.py
name = 'John Doe' age = 32 occupation = 'gardener' msg = ( f'Name: {name}\n' f'Age: {age}\n' f'Occupation: {occupation}' ) print(msg)
Ví dụ minh họa định dạng string nhiều dòng. f-string được đặt giữa ngoặc (); mỗi string được đi kèm kí tự f.
Kết quả script multiline.py
C:\Programs\Python\Python37>python.exe multiline.py Name: John Doe Age: 32 Occupation: gardener
f-string gọi hàm
Chúng ta có thể gọi hàm trong f-string
call_function.py
def mymax(x, y): return x if x > y else y a = 3 b = 4 print(f'Max of {a} and {b} is {mymax(a, b)}')
Ví dụ minh họa cách gọi hàm trong f-string
Kết quả
C:\Programs\Python\Python37>python.exe call_function.py Max of 3 and 4 is 4
f-string object
f-string chấp nhận object; các object phải có hoặc là __str__() hoặc __repr__()
objects.py
class User: def __init__(self, name, occupation): self.name = name self.occupation = occupation def __repr__(self): return f"{self.name} is a {self.occupation}" u = User('John Doe', 'gardener') print(f'{u}')
Ví dụ đánh giá object trong f-string
Kết quả
C:\Programs\Python\Python37>python.exe objects.py John Doe is a gardener
f-string kí tự escape
Ví dụ sau minh họa cách add thêm kí tự escape trong f-string
escaping.py
print(f'Python uses {{}} to evaludate variables in f-strings') print(f'This was a \'great\' film')
Để thêm kí tự {}, chúng ta double kí tự đó. Để thêm kí tự nháy đơn ‘, chúng ta thêm kí tự \ đi kèm kí tự ‘
Kết quả
C:\Programs\Python\Python37>python.exe escaping.py Python uses {} to evaludate variables in f-strings This was a 'great' film
f-string định dạng date time
Ví dụ sau minh họa định dạng date time
format_datetime.py
import datetime now = datetime.datetime.now() print(f'{now:%Y-%m-%d %H:%M}')
Hiển thị thời gian hiện tại trên PC. Kết quả như sau:
C:\Programs\Python\Python37>python.exe format_datetime.py 2020-08-30 20:23
f-string định dạng float
Giá trị dấu phẩy động có hậu tố f. Chúng tôi cũng có thể chỉ định độ chính xác: số chữ số thập phân. Độ chính xác là một giá trị nằm ngay sau ký tự dấu chấm.
format_floats.py
val = 12.3 print(f'{val:.2f}') print(f'{val:.5f}')
Ví dụ in ra định dạng dấu phẩy động. Kết quả in ra số phẩy động với độ chính xác lần lượt 2 và 5 chữ số ở phần thập phân.
C:\Programs\Python\Python37>python.exe format_floats.py 12.30 12.30000
f-string định dạng độ rộng
f-string có thể fill space hoặc giá trị khác nếu số lượng kí tự ít hơn độ rộng chỉ định. Xem ví dụ sau
format_width.py
for x in range(1, 11): print(f'{x:02} {x*x:3} {x*x*x:4}')
Ví dụ in ra ba cột. Mỗi cột có chiều rộng được xác định trước.
– x:02 có nghĩa là độ rộng là 2 kí tự, nếu số ít hơn 2 kí tự, thêm 0 vào trước.
– x*x*:3 có nghĩa là in ra giá trị x*x và độ rộng là 3 kí tự, nếu x*x ít hơn 3 kí tự, thêm space vào trước
– x*x*x:4 có nghĩa là in ra giá trị x*x*x và độ rộng là 4 kí tự, nếu x*x*x ít hơn 4 kí tự, thêm space vào trước
Kết quả
C:\Programs\Python\Python37>python.exe format_width.py 01 1 1 02 4 8 03 9 27 04 16 64 05 25 125 06 36 216 07 49 343 08 64 512 09 81 729 10 100 1000
f-string căn lề
Theo mặc định, các chuỗi được căn bên trái. Chúng ta có thể sử dụng ký tự> để căn các chuỗi ở bên phải. Ký tự> theo sau ký tự dấu hai chấm.
justify.py
s1 = 'a' s2 = 'ab' s3 = 'abc' s4 = 'abcd' print(f'{s1:>10}') print(f'{s2:>10}') print(f'{s3:>10}') print(f'{s4:>10}')
Chúng tôi có bốn chuỗi có độ dài khác nhau. Chúng tôi đặt chiều rộng của đầu ra là 10 ký tự. Các giá trị được căn lề bên phải.
Kết quả:
C:\Programs\Python\Python37>python.exe justify.py a ab abc abcd
f-string biểu diễn số
Có thể biểu diễn số dưới dạng: cơ số 10, octo (cơ số 8), hexa (cơ số 16),…
format_notations.py
a = 300 # hexadecimal print(f"{a:x}") # octal print(f"{a:o}") # scientific print(f"{a:e}")
Ví dụ in một giá trị với 3 cơ số
C:\Programs\Python\Python37>python.exe format_notations.py 12c 454 3.000000e+02
Leave a Reply
You must be logged in to post a comment.