Kiểu chuỗi trong Python
Chuỗi là một trong những kiểu dữ liệu phổ biến nhất trong Python. Chúng ta có thể tạo chúng đơn giản bằng cách đặt các ký tự trong dấu nháy kép. Python xử lý dấu nháy đơn giống như dấu nháy kép. Tạo chuỗi đơn giản như gán giá trị cho biến. Ví dụ:
var1 = 'Hello World!'
var2 = "Python Programming"
Truy cập các giá trị trong chuỗi
Python không hỗ trợ kiểu ký tự (kiểu char); chúng được coi là các chuỗi có độ dài một, do đó cũng được coi là một chuỗi con.
Để truy cập các chuỗi con, sử dụng dấu ngoặc vuông và chỉ mục để cắt chuỗi con của bạn. Ví dụ:
#!/usr/bin/python
var1 = 'Hello World!'
var2 = "Python Programming"
print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
var1[0]: H
var2[1:5]: ytho
Cập nhật chuỗi
Bạn có thể “cập nhật” một chuỗi hiện có bằng cách (tái) gán một biến cho một chuỗi khác. Giá trị mới có thể liên quan đến giá trị trước đó của nó hoặc với một chuỗi hoàn toàn khác. Ví dụ:
#!/usr/bin/python
var1 = 'Hello World!'
print "Updated String :- ", var1[:6] + 'Python'
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
Updated String :- Hello Python
Ký tự escape
Bảng sau là danh sách các ký tự escape hoặc các ký tự không in được, các ký tự này bắt đầu bằng ký hiệu dấu gạch chéo ngược.
Ký tự escape được thông dịch; trong một chuỗi dùng dấu nháy đơn cũng như chuỗi dùng dấu nháy kép.
Ký hiệu | Mã Hex | Mô tả |
---|---|---|
a | 0x07 | Chuông hoặc cảnh báo |
b | 0x08 | Backspace |
cx | Control-x | |
C-x | Control-x | |
e | 0x1b | Escape |
f | 0x0c | Formfeed |
M-C-x | Meta-Control-x | |
n | 0x0a | Dòng mới |
nnn | Ký hiệu bát phân, trong đó n nằm trong phạm vi 0 đến 7 | |
r | 0x0d | Xuống dòng |
s | 0x20 | Khoảng trắng |
t | 0x09 | Tab |
v | 0x0b | Vertical tab |
x | Ký tự x | |
xnn | Ký hiệu thập lục phân, trong đó n nằm trong phạm vi 0 – 9, a – f hoặc A – F |
Toán tử đặc biệt cho chuỗi
Giả sử biến chuỗi a = ‘Hello’ và biến b = ‘Python’, sau đó:
Toán tử | Miêu tả | Ví dụ |
---|---|---|
+ | Ghép chuỗi – Thêm giá trị ở hai bên của toán tử | a + b sẽ cho HelloPython |
* | Lặp lại – Tạo chuỗi mới, nối nhiều bản sao của cùng một chuỗi | a * 2 sẽ cho HelloHello |
[] | Cắt chuỗi – cắt một ký tự tại vị trí | a[1] sẽ cho e |
[:] | Cắt chuỗi – cắt từ vị trí này đến trước vị trí kia | a[1: 4] sẽ cho ell |
in | Toán tử thành viên – Trả về true nếu một ký tự tồn tại trong chuỗi đã cho | H trong a sẽ cho 1 |
not in | Toán tử thành viên – Trả về true nếu một ký tự không tồn tại trong chuỗi đã cho | M không ở trong a sẽ cho 1 |
r/R | Chuỗi thô – Loại bỏ ý nghĩa thực tế của các ký tự Escape. Cú pháp cho chuỗi thô có chữ “r” hoặc “R” đứng trước dấu nháy đơn hoặc nháy kép. | print r'n' sẽ in n print R'n' sẽ in n |
% | Định dạng – Thực hiện định dạng chuỗi | Xem ở phần tiếp theo |
Toán tử định dạng chuỗi
Một trong những tính năng thú vị nhất của Python là toán tử định dạng chuỗi %
. Toán tử này chỉ được sử dụng cho chuỗi và tương tự với hàm printf()
trong C. Sau đây là một ví dụ đơn giản:
#!/usr/bin/python
print "My name is %s and weight is %d kg!" % ('Zara', 21)
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau
My name is Zara and weight is 21 kg!
Dưới đây là danh sách các bộ ký hiệu hoàn chỉnh có thể được sử dụng cùng với %
:
Ký hiệu định dạng | Chuyển đổi |
---|---|
%c | Ký tự |
%S | Chuyển đổi chuỗi qua str() trước khi định dạng |
%i | Số nguyên, số thập phân có dấu |
%d | Số nguyên, số thập phân có dấu |
%u | Số nguyên, số thập phân không dấu |
%o | Số nguyên bát phân |
%x | Số nguyên thập lục phân (chữ thường) |
%X | Số nguyên thập lục phân (chữ cái chữ hoa) |
%e | Ký hiệu số mũ (với chữ thường ‘e’) |
%E | Ký hiệu số mũ (với chữ hoa ‘E’) |
%f | Số thực dấu phẩy động |
%g | Viết tắt của %f và %e |
%G | Viết tắt của %f và %E |
Dấu nháy ba
Dấu nháy ba của Python cho phép định nghĩa các chuỗi trải dài trên nhiều dòng, bao gồm cả ký tự NEWLINE, TAB và bất kỳ ký tự đặc biệt nào khác.
Cú pháp cho dấu nháy ba bao gồm ba dấu nháy đơn hoặc ba dấu nháy kép liên tiếp:
#!/usr/bin/python
para_str = """this is a long string that is made up of
several lines and non-printable characters such as
TAB ( t ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [ n ], or just a NEWLINE within
the variable assignment will also show up.
"""
print para_str
Khi đoạn mã trên được thực thi, nó tạo ra kết quả như sau.
this is a long string that is made up of
several lines and non-printable characters such as
TAB ( ) and they will show up that way when displayed.
NEWLINEs within the string, whether explicitly given like
this within the brackets [
], or just a NEWLINE within
the variable assignment will also show up.
Lưu ý: các ký tự escape trong chuỗi đã được chuyển đổi thành dạng in của nó.
Các chuỗi thô không coi dấu gạch chéo ngược là một ký tự đặc biệt. Mỗi ký tự bạn đặt vào một chuỗi thô vẫn giữ nguyên cách bạn viết nó. Dưới đây là một ví dụ về chuỗi thường:
#!/usr/bin/python
print 'C:\nowhere'
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau
C:nowhere
Bây giờ hãy sử dụng chuỗi thô bằng cách thêm ký tự “r” trước chuỗi như sau:
#!/usr/bin/python
print r'C:\nowhere'
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau
C:\nowhere
Chuỗi Unicode
Các chuỗi thông thường trong Python được lưu trữ bên trong dưới dạng ASCII 8 bit, trong khi các chuỗi Unicode được lưu trữ dưới dạng Unicode 16 bit.
Điều này cho phép tập hợp các ký tự đa dạng hơn, bao gồm các ký tự đặc biệt từ hầu hết các ngôn ngữ trên thế giới. Tôi sẽ khai báo việc xử lý chuỗi Unicode của mình theo cách sau:
#!/usr/bin/python
print u'Hello, world!'
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:
Hello, world!
Như bạn có thể thấy, các chuỗi Unicode sử dụng tiền tố “u”, giống như các chuỗi thô sử dụng tiền tố “r”.
Các hàm tích hợp để thao tác chuỗi
Python có rất nhiều hàm tích hợp sau để thao tác các chuỗi, bảng dưới đây sẽ trình bày một vài hàm thường được sử dụng:
STT | Hàm và mô tả |
---|---|
1 | capitalize()
Viết hoa chữ cái đầu tiên của chuỗi |
2 | count(str, beg= 0,end=len(string))
Đếm số lần str xảy ra trong chuỗi hoặc trong chuỗi con của chuỗi nếu bắt đầu chỉ mục bắt đầu và kết thúc chỉ mục kết thúc được đưa ra. |
3 | endswith(suffix, beg=0, end=len(string))
Xác định xem chuỗi hoặc chuỗi con của chuỗi (nếu bắt đầu chỉ mục bắt đầu và kết thúc chỉ mục kết thúc được đưa ra) kết thúc bằng hậu tố; trả về true nếu có và false nếu không. |
4 | find(str, beg=0 end=len(string))
Xác định xem str xảy ra trong chuỗi hay trong chuỗi con của chuỗi nếu bắt đầu chỉ mục bắt đầu và kết thúc chỉ mục kết thúc được đưa ra chỉ mục trả về nếu tìm thấy và -1 khác. |
5 | index(str, beg=0, end=len(string))
Tương tự như find(), nhưng sẽ đưa ra một ngoại lệ nếu không tìm thấy str. |
6 | tham gia (seq)
Hợp nhất (nối) các biểu diễn chuỗi của các phần tử trong chuỗi seq thành một chuỗi, với chuỗi phân tách. |
7 | len(string)
Trả về độ dài của chuỗi |
8 | lower()
Chuyển đổi tất cả các chữ cái in hoa trong chuỗi thành chữ thường. |
9 | replace(old, new [, max])
Thay thế tất cả các chuỗi old trong chuỗi bằng chuỗi new tối đa max lần. |
10 | startswith(str, beg=0,end=len(string))
Xác định xem chuỗi hoặc chuỗi con của chuỗi (nếu bắt đầu chỉ mục bắt đầu và kết thúc chỉ mục kết thúc được đưa ra) bắt đầu với chuỗi con str; trả về true nếu có và false nếu không. |
11 | upper()
Chuyển đổi chữ thường trong chuỗi thành chữ hoa. |
Các bạn có thể xem danh sách đầy đủ các hàm tích hợp xử lý chuỗi của Python tại đây: https://www.w3schools.com/python/python_ref_string.asp