Kiểu dữ liệu chuỗi (String) trong Python là một trong các kiểu phổ biến nhất trong Python. Chuỗi ký tự trong python được bao quanh bởi dấu ngoặc kép đơn hoặc dấu ngoặc kép. Python coi các lệnh trích dẫn đơn và kép là như nhau. Ví dụ: 'Hello' tương đương với "Hello".
Bạn có thể hiển thị một chuỗi trong Python bằng print(). Ví dụ:
print("Hello") print('Hello')
Nội dung chính
- Gán chuỗi cho một biến
- Chuỗi đa dòng
- Chuỗi là một mảng
- Truy cập các giá trị trong String
- Chiều dài chuỗi trong Python
- Các hàm cơ bản xử lý String trong Python
- Kiểm tra sự tồn tại của chuỗi trong chuỗi
- Nối chuỗi trong Python
- Định dạng chuỗi trong Python
- Các ký tự thoát trong Python
- Chuỗi dạng Unicode trong Python
- Các phương thức và hàm đã xây dựng sẵn để xử lý chuỗi trong Python
Gán chuỗi cho một biến
Việc gán một chuỗi cho một biến được thực hiện với tên biến theo sau là dấu bằng và chuỗi, Ví dụ:
str1 = "Hello World!" print(str1)
Chuỗi đa dòng
Bạn có thể gán một chuỗi nhiều dòng cho một biến bằng cách sử dụng 3 dấu ngoặc kép hoặc 3 dấu nháy đơn:
Ví dụ nhập chuỗi đa dòng với 3 dấu ngoặc kép:
str1 = """Vi du nhap chuoi nhieu dong trong Python day la dong thu 2 day la dong thu 3 day la dong thu 4""" print(str1)
Ví dụ nhập chuỗi đa dòng với 3 dấu nháy đơn:
str1 = '''Vi du nhap chuoi nhieu dong trong Python day la dong thu 2 day la dong thu 3 day la dong thu 4''' print(str1)
Chuỗi là một mảng
Các chuỗi trong Python là mảng các byte đại diện cho các ký tự unicode.
Tuy nhiên, Python không có kiểu dữ liệu ký tự, một ký tự đơn giản chỉ là một chuỗi có độ dài bằng 1.
Dấu ngoặc vuông [] có thể được sử dụng để truy cập các phần tử của chuỗi. Ký tự đầu tiên có chỉ số là 0.
str1 = "Hello World!" print(str1[0])
Kết quả:
H
Truy cập các giá trị trong String
Dấu ngoặc vuông [] có thể được sử dụng để truy cập các phần tử của chuỗi. Ký tự đầu tiên có chỉ số là 0.
Ví dụ 1:
str1 = "HELLO" str1 = "HELLO" print(str1[0]) print(str1[1]) print(str1[2]) print(str1[3]) print(str1[4])
Kết quả: trả về một chuỗi con từ vị trí 6 đến 8 của chuỗi đã cho:
H E L L O
Chỉ định chỉ mục bắt đầu và chỉ mục kết thúc, được phân tách bằng dấu hai chấm, để trả về một phần của chuỗi.
Ví dụ 2:
str1 = "HELLO" print(str1[:]) print(str1[0:]) print(str1[:5]) print(str1[:3]) print(str1[0:2]) print(str1[1:4])
Kết quả:
HELLO HELLO HELLO HEL HE ELL
Truy cập chuỗi bằng chỉ mục âm
Sử dụng các chỉ mục âm để lấy ra chuỗi con bắt đầu từ cuối chuỗi: Ví dụ:
str1 = "Hello World!" print(str1[-5:-2])
Kết quả: trả về một chuỗi con từ vị trí 3 đến 5 từ từ cuối chuỗi của chuỗi đã cho:
orl
Chiều dài chuỗi trong Python
Sử dụng hàm len() để tính chiều dài chuỗi trong Python, Ví dụ:
a = "Hello World!" print(len(a))
Kết quả:
12
Các hàm cơ bản xử lý String trong Python
Python có một tập hợp các phương thức tích hợp mà bạn có thể sử dụng để xử lý chuỗi (String).
Hàm strip()
Hàm strip() loại bỏ bất kỳ khoảng trắng từ đầu hoặc cuối cùng, ví dụ:
a = " Hello World! " print(a.strip()) # returns "Hello World!"
Kết quả:
Hello World!
Hàm lower()
Hàm lower() trả về chuỗi chữ thường, ví dụ:
a = "Hello World!" print(a.lower()) # returns "hello world!"
Kết quả:
hello world!
Hàm upper()
Hàm upper() trả về chuỗi chữ hoa, ví dụ:
a = "Hello World!" print(a.upper()) # returns "HELLO WORLD!"
Kết quả:
HELLO WORLD!
Hàm replace()
Hàm replace() thay thế một chuỗi bằng một chuỗi khác, ví dụ:
a = "Hello World!" print(a.replace("l", "t"))
Kết quả:
Hetto Wortd!
Hàm split()
Hàm split() tách chuỗi thành các chuỗi con, ví dụ:
a = "Hello, World!" print(a.split(","))
Kết quả:
['Hello', ' World!']
Kiểm tra sự tồn tại của chuỗi trong chuỗi
Để kiểm tra xem một cụm từ hoặc ký tự nào đó có trong một chuỗi hay không, chúng ta có thể sử dụng các từ khóa in hoặc not in.
Ví dụ 1: kiểm tra xem cụm từ "python" có tồn tại trong chuỗi sau không:
str1 = "hoc lap trinh python string." x = "python" in str1 print(x)
Kết quả:
True
Ví dụ 2: kiểm tra xem cụm từ "python" không tồn tại trong chuỗi sau không:
str1 = "hoc lap trinh python string." x = "python" not in str1 print(x)
Kết quả:
False
Nối chuỗi trong Python
Để nối hoặc kết hợp hai chuỗi với nhau bạn có thể sử dụng toán tử +.
Ví dụ 1: Nối biến a với biến b thành biến c:
a = "Hello " b = "Python " c = a + b print(c)
Kết quả:
Hello Python
Định dạng chuỗi trong Python
Trong Python, chúng ta không thể kết hợp các chuỗi và số như thế này:
n = 3 txt = "Hello Python " + 3 print(txt)
Chúng ta có thể kết hợp chuỗi và số bằng cách sử dụng hàm format()
Ví dụ: Sử dụng hàm format() để chèn số vào chuỗi:
n = 3 txt = "Hello Python {}" print(txt.format(n))
Kết quả:
Hello Python 3
Bạn có thể nhập bất kỳ số lượng đối số cho hàm format(), chúng sẽ được thay thế dấu {} tương ứng, ví dụ:
txt = "Xin chao, toi la {}, {} tuoi, den tu {}" print(txt.format("Nam", 22, "Ha Noi"))
Kết quả:
Xin chao, toi la Nam, 22 tuoi, den tu Ha Noi
Các ký tự thoát trong Python
Bảng dưới đây liệt kê danh sách các ký tự thoát hoặc không thể in được mà có thể được biểu diễn với dấu \.
Ký tự thoát | Biểu diễn trong hệ 16 | Miêu tả |
---|---|---|
\a | 0x07 | Bell hoặc alert |
\b | 0x08 | Backspace |
\cx | Control-x | |
\C-x | Control-x | |
\e | 0x1b | Escape |
\f | 0x0c | Formfeed |
\M-\C-x | Meta-Control-x | |
\n | 0x0a | Newline |
\nnn | Notation trong hệ cơ số 8, ở đây n là trong dãy từ 0 tới 7 | |
\r | 0x0d | Carriage return |
\s | 0x20 | Space |
\t | 0x09 | Tab |
\v | 0x0b | Tab dọc |
\x | Ký tự x | |
\xnn | Notation trong hệ thập lục phân, ở đây n là trong dãy từ 0.9, a.f, hoặc A.F |
Chuỗi dạng Unicode trong Python
Các chuỗi thông thường trong Python được lưu trữ nội tại 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 để có một 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. Bạn theo dõi ví dụ:
print (u'Hello World!')
Khi code trên được thực thi sẽ cho kết quả:
Hello World!
Như bạn có thể thấy, các chuỗi dạng Unicode sử dụng tiền tố u, trong khi các chuỗi thô sử dụng tiền tố r.
Các phương thức và hàm đã xây dựng sẵn để xử lý chuỗi trong Python
Python cung cấp các phương thức đa dạng đã được xây dựng sẵn để thao tác với các chuỗi. Bảng dưới đây liệt kê các phương thức này. Bạn truy cập link để thấy ví dụ chi tiết.
STT | Hàm và mô tả |
---|---|
1 | Hàm capitalize() Viết hoa chữ cái đầu tiên của chuỗi |
2 | Hàm center(width, fillchar) Trả về một chuỗi mới, trong đó chuỗi ban đầu đã được cho vào trung tâm và hai bên đó là các fillchar sao cho tổng số ký tự của chuỗi mới là width |
3 | Hàm count(str, beg= 0,end=len(string)) Đếm xem chuỗi str này xuất hiện bao nhiêu lần trong chuỗi string hoặc chuỗi con của string nếu bạn cung cấp chỉ mục ban đầu start và chỉ mục kết thúc end |
4 | Hàm endswith(suffix, beg=0, end=len(string)) Xác định xem nếu chuỗi string hoặc chuỗi con đã cho của string (nếu bạn cung cấp chỉ mục bắt đầu beg và chỉ mục kết thúc end) kết thúc với hậu tố suffix thì trả về true, nếu không thì phương thức này trả về false |
5 | Hàm expandtabs(tabsize=8) Mở rộng các tab trong chuỗi tới số khoảng trống đã cho; mặc định là 8 space cho mỗi tab nếu bạn không cung cấp tabsize |
6 | Hàm find(str, beg=0 end=len(string)) Xác định xem chuỗi str có xuất hiện trong chuỗi string hoặc chuỗi con đã cho của string (nếu bạn cung cấp chỉ mục bắt đầu beg và chỉ mục kết thúc end), nếu xuất hiện thì trả về chỉ mục của str, còn không thì trả về -1 |
7 | Hàm index(str, beg=0, end=len(string)) Tương tự như find(), nhưng tạo ra một ngoại lệ nếu str là không được tìm thấy |
8 | Hàm isalnum() Trả về true nếu chuỗi có ít nhất một ký tự và tất cả ký tự là chữ-số. Nếu không hàm sẽ trả về false |
9 | Hàm isalpha() Trả về true nếu chuỗi có ít nhất 1 ký tự và tất cả ký tự là chữ cái. Nếu không phương thức sẽ trả về false |
10 | Hàm isdigit() Trả về true nếu chuỗi chỉ chứa các chữ số, nếu không là false |
11 | Hàm islower() Trả về true nếu tất cả ký tự trong chuỗi là ở dạng chữ thường, nếu không là false |
12 | Hàm isnumeric() Trả về true nếu một chuỗi dạng Unicode chỉ chứa các ký tự số, nếu không là false |
13 | Hàm isspace() Trả về true nếu chuỗi chỉ chứa các ký tự khoảng trắng whitespace, nếu không là false |
14 | Hàm istitle() Trả về true nếu chuỗi là ở dạng titlecase, nếu không là false |
15 | Hàm isupper() Trả về true nếu tất cả ký tự trong chuỗi là chữ hoa |
16 | Hàm join(seq) Nối chuỗi các biểu diễn chuỗi của các phần tử trong dãy seq thành một chuỗi |
17 | Hàm len(string) Trả về độ dài của chuỗi |
18 | Hàm ljust(width[, fillchar]) Trả về một chuỗi mới, trong đó có chuỗi ban đầu được căn chỉnh vào bên trái và bên phải là các fillchar sao cho tổng số ký tự là width |
19 | Hàm lower() Chuyển đối tất cả chữ hoa trong chuỗi sang kiểu chữ thường |
20 | Hàm lstrip() Xóa tất cả các khoảng trống trắng ban đầu (leading) trong chuỗi |
21 | Hàm max(str) Trả về ký tự chữ cái lớn nhất từ chuỗi str đã cho |
22 | Hàm min(str) Trả về ký tự chữ cái nhỏ nhất từ chuỗi str đã cho |
23 | Hàm replace(old, new [, max]) Thay thế tất cả sự xuất hiện của old trong chuỗi với new với số lần xuất hiện max (nếu cung cấp) |
24 | Hàm rfind(str, beg=0,end=len(string)) Tương tự hàm find(), nhưng trả về chỉ mục cuối cùng |
25 | Hàm rindex( str, beg=0, end=len(string)) Giống index(), nhưng trả về chỉ mục cuối cùng nếu tìm thấy |
26 | Hàm rjust(width,[, fillchar]) Trả về một chuỗi mới, trong đó có chuỗi ban đầu được căn chỉnh vào bên phải và bên trái là các fillchar sao cho tổng số ký tự là width |
27 | Hàm rstrip() Xóa bỏ tất cả các khoảng trống trắng ở cuối (trailing) của chuỗi |
28 | Hàm split(str="", num=string.count(str)) Chia chuỗi theo delimeter đã cho (là space nếu không được cung cấp) và trả về danh sách các chuỗi con; nếu bạn cung cấp num thì chia chuỗi thành num chuỗi con |
29 | Hàm splitlines( num=string.count('\n')) Trả về một List gồm tất cả các dòng trong chuỗi, và tùy ý xác định các ngắt dòng (nếu num được cung cấp và là true). |
30 | Hàm startswith(str, beg=0,end=len(string)) Xác định xem chuỗi hoặc chuỗi con (nếu bạn cung cấp chỉ mục bắt đầu beg và chỉ mục kết thúc end) có bắt đầu với chuỗi con str không, nếu có trả về true, nếu không là false |
31 | Hàm strip([chars]) Thực hiện cả hai phương thức lstrip() và rstrip() trên chuỗi |
32 | Hàm swapcase() Đảo ngược kiểu của tất cả ký tự trong chuỗi |
33 | Hàm title() Trả về một bản sao của chuỗi trong đó tất cả ký tự đầu tiên của tất cả các từ là ở kiểu chữ hoa. |
34 | Hàm upper() Chuyển đổi các chữ thường trong chuỗi thành chữ hoa |
35 | Hàm zfill (width) Trả về một chuỗi mới, trong đó bao gồm chuỗi ban đầu và được đệm thêm với các số 0 vào bên trái sao cho tổng ký tự là width |
36 | Hàm isdecimal() Trả về true nếu một chuỗi dạng Unicode chỉ chứa các ký tự thập phân, nếu không là false |