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

Lập trình Python
Bài Viết Liên Quan:
Kiểu số trong Python
Trung Nguyen 13/04/2020
Kiểu số trong Python

Kiểu số trong Python là gì? Python có những kiểu dữ liệu số nào? Các hàm tiện ích về số trong Python?

Vòng lặp trong Python
Trung Nguyen 13/04/2020
Vòng lặp trong Python

Vòng lặp trong Python là gì? Python hỗ trợ những loại vòng lặp nào? Cách sử dụng những vòng lặp này trong Python.

Lệnh rẽ nhánh trong Python
Trung Nguyen 13/04/2020
Lệnh rẽ nhánh trong Python

Lệnh rẽ nhánh trong Python là gì? Python cũng cấp những loại lệnh rẽ nhánh nào?

Toán tử cơ bản trong Python
Trung Nguyen 12/04/2020
Toán tử cơ bản trong Python

Toán tử cơ bản trong Python là gì? Python có những loại toán tử nào? Độ ưu tiên của các toán tử trong Python?