Format - định dạng chuỗi trong Python 3
Khi mới học lập trình Python tôi cảm thấy bối rối với việc xử lý xâu ký tự. Python còn cung cấp rất nhiều hàm, phương thức để việc xử lý được dễ dàng, đơn giản hơn. Điều đó cũng có nghĩa phải nhớ nhiều thứ hơn, rối rắm hơn. Việc định dạng một chuỗi cũng vậy, để định dạng một chuỗi bạn có thể dùng toán tử % hoặc có thể dùng hàm format().
Với toán tử %, nó khá giống với printf() trong C. Hãy thử xem ví dụ sau đây:
>>> "%d...%d...%d...Say hello to %s!" % (1, 2, 3,
"Simmon")
'1...2...3...Say hello to Simmon'
Bài viết này xin được đi sâu về hàm format(). Vì tôi thấy format() ưu việt hơn so với % và format() cũng làm được nhiều thứ hơn.
Cơ bản
Ví dụ trên chính là định dạng một chuỗi cơ bản. Định dạng chuỗi cơ bản là khi bạn chỉ thay thế các ký tự đặc biệt trong chuỗi bằng số khác, chuỗi khác. Với hàm format(): '...{}...'.format(value) >>> '{}...{}...{}...Say hello to {}!'.format(1,2,3,
'Simmon')
'1...2...3...Say hello to Simmon!'
>>> "{1} chào {0}!".format("Chi", "Anh Mạnh")
'Anh Mạnh chào Chi!'
Căn chỉnh chuỗi và chèn ký tự
Bạn có một chuỗi "Chi" gồm 3 ký tự nhưng bạn muốn trình bày chuỗi ấy trong 1 string 10 ký tự và các ký tự còn lại là space như thế này chẳng hạn' Chi '
>>> "{:^10}".format("Chi")
' Chi '
- Dấu ngoặc {} có tác dụng thay thế string "Chi" như trên.
- Dấu : thể hiện bạn đang thực hiện thao tác căn chỉnh. Đằng sau nó có thể có một con số hoặc các ký tự đặc biệt mà python quy ước sẵn. Tôi gọi là phép căn chỉnh.
- Dấu ^ là ký tự đặc biệt đó có tác dụng để chuỗi "Chi" đứng ở giữa đoạn string.
- Số 10, đơn giản bạn tạo ra string sẽ có 10 ký tự.
| Ký tự | Tác dụng |
| < | Căn lề bên trái |
| ^ | Căn giữa |
| > | Căn lề bên phải |
>>> "{:<10}".format("Chi")
>>> "{:10}".format("Chi")
'Chi '
>>> "{:>10}".format("Chi")
' Chi'
>>> "{:-<10}".format("Chi")
'Chi-------'
>>> "{:a^10}".format("Chi")
'aaaChiaaaa'
Cắt chuỗi
Ngược lại với việc chèn thêm ký tự thì đó cắt xén bớt ký tự đi. Dùng dấu "." và một con số đứng sau, ví dụ bạn có một chuỗi 'Chiaaaaaaa' và bạn chỉ muốn lấy 4 ký tự đầu: >>> "{:.4}".format("Chi")
'Chia'
>>> "{:^10.4}".format("Chi")
' Chia '
>>> "{:x^20.4}".format("Chi")
'xxxxxxxxChiaxxxxxxxx'
Số học
Và đương nhiên ta hoàn toàn có thể format với số học >>> "{:d}".format(26)
'26'
>>> "{:f}".format(26.06)
'26.060000'
Chuyển đổi qua lại giữa các hệ cơ số nhị phân(bin), bát phân(oct), thập phân(dec), thập lục phân(hex)
>>> ( bin(267), oct(267), hex(267) )
('0b100001011', '0o413', '0x10b')
>>> "{:b}, {:o}, {:d}, {:X}".format(267, 267, 267, 267 )
'100001011, 413, 267, 10B'
Dấu dương, âm và làm tròn
Thêm một dấu cộng hay một dấu trừ khi format trong python cũng hơi khó hiểu một chút: >>> "{:+d}".format(267)
'+267'
>>> "{:-d}".format(267)
'267'
>>> "{:d}".format(-267)
'-267'
>>> "{:+d}".format(-267)
'-267'
>>> "{:=+6d}".format(267)
'+ 267'
>>> "{:.4f}".format(267.575757)
'267.5758'
>>> "{:=+10.2f}".format(267.575757)
'+ 26.58'
Nhận xét
Đăng nhận xét