Hot deal hosting vps vietnix tháng 2Hot deal hosting vps vietnix tháng 2
PHP
Python

Trang chủ

Tìm hiểu về chuỗi trong Python

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
10/02/2025
16 phút đọc
Theo dõi Vietnix trên

Tìm hiểu về chuỗi trong Python

Chuỗi là Trong Python một trong những kiểu dữ được sử dụng để biểu diễn văn bản và đóng vai trò thiết yếu trong nhiều tác vụ lập trình, từ xử lý dữ liệu đơn giản đến xây dựng các ứng dụng phức tạp. Bài viết này sẽ giúp bạn cái nhìn tổng quan về chuỗi trong Python, bao gồm khái niệm, cách khởi tạo, và một số thao tác cơ bản.

Các điểm chính

Khi đọc xong bài viết, bạn sẽ:

  • Nắm vững khái niệm cơ bản về chuỗi trong Python: Bạn sẽ hiểu rõ chuỗi là gì, vai trò của nó trong lập trình Python và lý do tại sao nó lại quan trọng.
  • Biết cách tạo và thao tác với chuỗi: Bạn sẽ học được các phương pháp khác nhau để tạo chuỗi (nháy đơn, nháy kép, nháy tam), cách truy cập các ký tự trong chuỗi, cách cập nhật chuỗi, và sử dụng các ký tự thoát đặc biệt.
  • Sử dụng thành thạo các toán tử và phương thức xử lý chuỗi: Bạn sẽ nắm vững các toán tử đặc biệt cho chuỗi (ví dụ: +, *, slicing), toán tử định dạng chuỗi (%), và các phương thức tích hợp sẵn của Python để xử lý chuỗi (ví dụ: upper(), lower(), replace(), split()).
  • Phân biệt và ứng dụng các loại chuỗi khác nhau trong Python: Bạn sẽ hiểu được sự khác biệt giữa chuỗi sử dụng nháy đơn, nháy kép, và nháy tam, cũng như biết cách sử dụng chuỗi nhiều dòng.

Chuỗi trong Python là gì?

Trong Python, chuỗi (string) là một dãy các ký tự Unicode và có tính chất không thể thay đổi (immutable). Mỗi ký tự có một giá trị số duy nhất theo tiêu chuẩn UNICODE. Tuy nhiên, toàn bộ chuỗi không có bất kỳ giá trị số nào, ngay cả khi tất cả các ký tự trong chuỗi là chữ số. Để phân biệt chuỗi với số và các định danh (identifier) khác, dãy ký tự được đặt trong dấu nháy đơn ('...'), nháy kép ("...") hoặc ba dấu nháy ('''...''' hoặc """..."""). Ví dụ: 1234 là một số (số nguyên), nhưng ‘1234’ là một chuỗi.

Chuỗi trong Python là một dãy ký tự chuẩn Unicode và có tính không thể thay đổi
Chuỗi trong Python là một dãy ký tự chuẩn Unicode và có tính không thể thay đổi

Cách tạo chuỗi trong Python

Chỉ cần đảm bảo dãy ký tự được đặt bên trong các dấu nháy phù hợp, Python không phân biệt giữa nháy đơn, nháy kép hay ba dấu nháy. Do đó, các cách biểu diễn chuỗi sau đây là tương đương:

>>> 'Welcome To VietnixTutorials'
'Welcome To VietnixTutorials'
>>> "Welcome To VietnixTutorials"
'Welcome To VietnixTutorials'
>>> '''Welcome To VietnixTutorials'''
'Welcome To VietnixTutorials'
>>> """Welcome To VietnixTutorials"""
'Welcome To VietnixTutorials'

Lưu ý: Trong các phiên bản Python cũ, chuỗi được lưu trữ nội bộ dưới dạng ASCII 8 bit, do đó, cần phải thêm ‘u’ vào trước chuỗi để biểu thị đó là chuỗi Unicode. Tuy nhiên, kể từ Python 3, tất cả các chuỗi đều được biểu diễn bằng Unicode. Vì vậy, việc thêm ‘u’ không còn cần thiết nữa.

Truy cập giá trị trong chuỗi

Trong Python, không có kiểu dữ liệu riêng biệt cho ký tự. Ký tự được xem như là chuỗi có độ dài bằng 1, và do đó cũng được coi là một chuỗi con (substring).

Để truy cập vào các chuỗi con, bạn sử dụng cặp dấu ngoặc vuông [] để thực hiện slicing (cắt chuỗi) cùng với chỉ số (index) hoặc các chỉ số để lấy chuỗi con mong muốn. Ví dụ:

ten_mon_an = "Bún chả Hà Nội"
thong_diep = "Chào mừng bạn đến với Python!"

# Lấy ký tự đầu tiên của tên món ăn
print("Ký tự đầu tiên:", ten_mon_an[0])

# Lấy một phần của thông điệp (từ vị trí 4 đến 7)
print("Một phần của thông điệp:", thong_diep[4:8])

Khi chạy code, kết quả nhận được như sau:

Ký tự đầu tiên: B

Một phần của thông điệp:  mừn

Cập nhật chuỗi

Trong Python, bạn không thể thay đổi trực tiếp một chuỗi đã có (strings là immutable – không thể thay đổi). Tuy nhiên, bạn có thể “cập nhật” một chuỗi bằng cách gán lại biến đó cho một chuỗi khác. Giá trị mới này có thể liên quan đến giá trị trước đó của biến, hoặc là một chuỗi hoàn toàn khác. Ví dụ:

loi_chao = 'Xin chào các bạn!'
print("Chuỗi sau khi cập nhật:", loi_chao[:8] + 'học viên!')
# Thay vì gán với chuỗi hoàn toàn khác, ta sẽ giữ nguyên 1 phần từ chuỗi trước

Khi thực thi đoạn mã trên, kết quả sẽ là:

Chuỗi sau khi cập nhật: Xin chào học viên!

Ký tự thoát (Escape Characters)

Bảng sau đây liệt kê các ký tự thoát, hay còn gọi là các ký tự không thể in được, có thể được biểu diễn bằng dấu gạch chéo ngược (\). Một ký tự thoát được diễn giải (interpreted); trong cả chuỗi được trích dẫn bằng dấu nháy đơn cũng như dấu nháy kép.

Ký hiệu với dấu gạch chéo ngượcKý tự HexadecimalMô tả
\a0x07Chuông hoặc âm báo (Bell or alert)
\b0x08Xóa lùi (Backspace)
\cxControl-x
\C-xControl-x
\e0x1bEscape
\f0x0cĐẩy trang (Formfeed)
\M-\C-xMeta-Control-x
\n0x0aXuống dòng mới (Newline)
\nnnKý hiệu bát phân, trong đó n nằm trong khoảng 0-7
\r0x0dVề đầu dòng (Carriage return)
\s0x20Khoảng trắng (Space)
\t0x09Tab
\v0x0bTab dọc (Vertical tab)
\xKý tự x
\xnnKý hiệu thập lục phân, trong đó n nằm trong khoảng 0-9, a-f, hoặc A-F

Các toán tử đặc biệt cho chuỗi

Giả sử biến chuỗi a có giá trị 'Hello' và biến b có giá trị 'Python'. Khi đó, các toán tử sau sẽ có tác dụng:

Toán tửMô tảVí dụKết quả
+Nối chuỗi: Kết hợp các chuỗi ở hai phía của toán tử.a + b'HelloPython'
*Lặp chuỗi: Tạo chuỗi mới bằng cách lặp lại chuỗi ban đầu nhiều lần.a * 2'HelloHello'
[]Truy cập ký tự: Lấy ra ký tự tại vị trí (chỉ số) xác định trong chuỗi.a[1]'e'
[:]Cắt chuỗi: Lấy ra một chuỗi con (tập hợp ký tự) từ khoảng vị trí cho trước.a[1:4]'ell'
inKiểm tra phần tử: Kiểm tra một ký tự có nằm trong chuỗi hay không (trả về True/False).'H' in aTrue (hoặc 1 trong Python)
not inKiểm tra phần tử (phủ định): Kiểm tra một ký tự không nằm trong chuỗi (trả về True/False).'M' not in aTrue
r/RChuỗi thô (Raw String): Loại bỏ ý nghĩa đặc biệt của các ký tự thoát (escape characters). Cú pháp của chuỗi thô giống hệt chuỗi thường, chỉ khác là có thêm ký tự “r” (hoặc “R”) đứng trước dấu nháy.print(r'\n') print(R'\n')\n
%Định dạng chuỗi (String Formatting): Thực hiện định dạng chuỗi (sẽ xem ở phần sau).

Toán tử định dạng chuỗi (%)

Một trong những tính năng hay của Python là toán tử định dạng chuỗi %. Toán tử % này là duy nhất cho kiểu chuỗi, và bù đắp cho việc thiếu các hàm từ họ printf() của C.

Ví dụ đơn giản:

print ("Tôi tên là %s và tôi cao %d cm!" % ('Nam', 170))

Khi đoạn code trên được thực thi, kết quả in ra sẽ là:

Tôi tên là Nam và tôi cao 170 cm!

Dưới đây là danh sách đầy đủ các ký hiệu có thể được sử dụng cùng với % :

Ký hiệuÝ Nghĩa
%cKý tự
%sChuyển đổi thành chuỗi (sử dụng hàm str() trước khi định dạng)
%iSố nguyên thập phân có dấu
%dSố nguyên thập phân có dấu
%uSố nguyên thập phân không dấu
%oSố nguyên hệ bát phân
%xSố nguyên hệ thập lục phân (chữ cái thường)
%XSố nguyên hệ thập lục phân (chữ cái HOA)
%eKý hiệu số mũ (với chữ ‘e‘ thường)
%EKý hiệu số mũ (với chữ ‘E‘ HOA)
%fSố thực dấu phẩy động
%gDạng ngắn gọn hơn của %f hoặc %e
%GDạng ngắn gọn hơn của %f hoặc %E

Bên cạnh các ký tự định dạng đã biết (như %s, %d…), toán tử % trong Python còn hỗ trợ một số ký hiệu và chức năng khác, giúp ta kiểm soát chi tiết hơn cách các giá trị được định dạng:

Ký HiệuChức Năng
*Xác định độ rộng hoặc độ chính xác bằng tham số truyền vào.
-Căn trái.
+Hiển thị dấu của số (dấu + với số dương, dấu - với số âm).
<sp>Để lại một khoảng trắng trước số dương.
#Thêm 0 ở đầu cho số hệ bát phân, hoặc 0x/0X cho số hệ thập lục phân (tùy thuộc vào việc dùng %x hay %X).
0Đệm bằng số 0 ở bên trái (thay vì khoảng trắng).
%%Để hiển thị ký tự % (khi cần in ra chính ký tự phần trăm, không phải ký tự định dạng).
(var)Ánh xạ biến (sử dụng khi các giá trị được truyền vào dưới dạng một dictionary).
m.nm là độ rộng tối thiểu, và n là số chữ số sau dấu thập phân (nếu có).

Dấu nháy kép trong chuỗi Python

Nếu bạn muốn đưa một đoạn văn bản nằm trong dấu nháy kép vào trong một chuỗi, thì chuỗi đó nên được đặt trong dấu nháy đơn. Ngược lại, để đưa một đoạn văn bản có dấu nháy đơn vào chuỗi, thì chuỗi đó nên được viết trong dấu nháy kép. Ví dụ:

# Trường hợp 1: Chuỗi chứa dấu nháy kép, đặt cả chuỗi trong nháy đơn
thong_bao = 'Hôm nay là thứ "Hai"'
print("Thông báo:", thong_bao)

# Trường hợp 2: Chuỗi chứa dấu nháy đơn, đặt cả chuỗi trong nháy kép
cau_chao = "Bạn An nói 'Xin chào!'"
print("Câu chào:", cau_chao)

Khi thực hiện, kết quả sẽ là:

Thông báo: Hôm nay là thứ “Hai”

Câu chào: Bạn An nói ‘Xin chào!’

Dấu nháy tam trong chuỗi Python

Để tạo một chuỗi với dấu nháy tam (ba dấu nháy liên tiếp), bạn có thể sử dụng ba dấu nháy đơn (''') hoặc ba dấu nháy kép (""") – cả hai cách đều cho kết quả giống nhau. Ví dụ:

gioi_thieu = '''
Xin chào! Đây là phần giới thiệu.
Chúng tôi học Python
'''
print("Chuỗi:", gioi_thieu)

gioi_thieu_2 = """
Xin chào! Đây là phần giới thiệu.
Chúng tôi học Python
"""

print ("Chuỗi:", gioi_thieu_2)

Kết quả:

Chuỗi: 

Xin chào! Đây là phần giới thiệu.

Chúng tôi học Python

 

Chuỗi: 

Xin chào! Đây là phần giới thiệu.

Chúng tôi học Python

Chuỗi nhiều dòng trong Python

Trong Python, để biểu diễn một chuỗi văn bản trải dài trên nhiều dòng, ta có thể sử dụng cặp ba dấu nháy đơn ''' hoặc ba dấu nháy kép """. Ví dụ:

loi_bai_hat = '''
Một con vịt xòe ra hai cái cánh
Nó kêu rằng quác quác quác, quạc quạc quạc
Gặp hồ nước nó bì bà bì bõm
Lúc lên bờ vẫy cái cánh cho khô
'''
print(loi_bai_hat)

Khi thực thi, đoạn mã trên sẽ hiển thị:

Một con vịt xòe ra hai cái cánh

Nó kêu rằng quác quác quác, quạc quạc quạc

Gặp hồ nước nó bì bà bì bõm

Lúc lên bờ vẫy cái cánh cho khô

Toán tử số học với chuỗi

Chuỗi (string) là kiểu dữ liệu phi số học (non-numeric). Do đó, chúng ta không thể sử dụng các toán tử số học (như +, -, *, /) với các toán hạng là chuỗi một cách thông thường như với số. Nếu cố gắng thực hiện, Python sẽ báo lỗi TypeError. Ví dụ:

print ("Xin chào" - "Thế giới")

Khi thực thi đoạn mã trên, chương trình sẽ phát sinh lỗi sau:

>>> “Xin chào” – “Thế giới”

Traceback (most recent call last):

  File “<stdin>”, line 1, in <module>

TypeError: unsupported operand type(s) for -: ‘str’ and ‘str’

Giải thích lỗi:

  • Lỗi TypeError: Lỗi này xuất hiện vì Python không hỗ trợ phép trừ (-) giữa hai chuỗi. Thông báo lỗi “unsupported operand type(s) for -: 'str' and 'str'” cho biết rằng kiểu dữ liệu của các toán hạng (str, tức là chuỗi) không phù hợp với toán tử -.

Kiểm tra kiểu dữ liệu của chuỗi trong Python

Một chuỗi trong Python là một đối tượng (object) của lớp (class) str. Ta có thể xác minh điều này bằng hàm type(). Ví dụ:

thong_bao = "Chúc mừng năm mới!"
print (type(thong_bao))

Đoạn code này sẽ cho kết quả:

<class ‘str’>

Các phương thức xử lý chuỗi tích hợp sẵn

Trong Python có cung cấp một loạt các phương thức tích hợp sẵn để thao tác với chuỗi. Bên dưới đây là danh sách và mô tả cho từng phương thức:

Phương thứcMô tả
capitalize()Viết hoa chữ cái đầu tiên của chuỗi.
casefold()Chuyển đổi tất cả các chữ cái in hoa trong chuỗi thành chữ thường. Tương tự như lower(), nhưng áp dụng được cho cả các ký tự UNICODE.
center(width, fillchar)Căn giữa chuỗi trong một khoảng có độ rộng width, sử dụng ký tự fillchar (mặc định là khoảng trắng) để đệm.
count(str, beg=0, end=len(string))Đếm số lần xuất hiện của chuỗi str trong chuỗi hiện tại hoặc trong một chuỗi con (nếu cung cấp vị trí bắt đầu beg và vị trí kết thúc end).
decode(encoding='UTF-8', errors='strict')Giải mã chuỗi sử dụng bộ mã hóa đã đăng ký cho encoding. Giá trị mặc định là UTF-8.
encode(encoding='UTF-8', errors='strict')Mã hóa chuỗi sử dụng bộ mã hóa đã đăng ký cho encoding. Mặc định mã hóa UTF-8. Nếu có lỗi sẽ đưa ra cảnh báo ValueError
endswith(suffix, beg=0, end=len(string))Kiểm tra xem chuỗi hiện tại (hoặc chuỗi con) có kết thúc bằng suffix hay không; trả về True nếu đúng và False nếu sai
expandtabs(tabsize=8)Mở rộng các tab (dấu tab) trong chuỗi thành nhiều khoảng trắng; mặc định là 8 khoảng trắng cho mỗi tab nếu không cung cấp tabsize.
find(str, beg=0, end=len(string))Tìm kiếm chuỗi str trong chuỗi gốc (hoặc chuỗi con). Trả về vị trí tìm thấy; nếu không, trả về -1.
format(*args, **kwargs)Phương thức này được sử dụng để định dạng giá trị chuỗi .
format_map(mapping)Tương tự như format() nhưng format_map sử dụng một đối tượng ánh xạ(mapping object) .
index(str, beg=0, end=len(string))Giống như find(), nhưng sẽ báo lỗi (exception) nếu không tìm thấy str.
isalnum()Trả về True nếu chuỗi có ít nhất 1 ký tự và tất cả các ký tự đều là chữ hoặc số; ngược lại trả về False.
isalpha()Trả về True nếu chuỗi có ít nhất 1 ký tự và tất cả các ký tự đều là chữ cái; ngược lại trả về False.
isascii()Trả về True nếu tất cả các ký tự là ký tự ASCII.
isdecimal()Trả về True nếu một chuỗi unicode chỉ chứa các ký tự thập phân; ngược lại trả về False.
isdigit()Trả về True nếu chuỗi chỉ chứa các chữ số; ngược lại trả về False.
isidentifier()Kiểm tra chuỗi có phải là một tên định danh hợp lệ trong Python hay không.
islower()Trả về True nếu chuỗi có ít nhất 1 ký tự và tất cả các ký tự viết thường đều ở dạng chữ thường; ngược lại trả về False.
isnumeric()Trả về True nếu một chuỗi unicode chỉ chứa các ký tự số; ngược lại trả về False.
isprintable()Kiểm tra xem tất cả các ký tự trong chuỗi có thể in được hay không
isspace()Trả về True nếu chuỗi chỉ chứa các ký tự khoảng trắng; ngược lại trả về False.
istitle()Trả về True nếu chuỗi là một chuỗi dạng tiêu đề (viết hoa chữ cái đầu mỗi từ); ngược lại trả về False.
isupper()Trả về True nếu chuỗi có ít nhất 1 ký tự và tất cả các ký tự in hoa; ngược lại trả về False.
join(seq)Nối các phần tử trong seq (một chuỗi) thành một chuỗi, với chuỗi hiện tại là chuỗi ngăn cách.
ljust(width[, fillchar])Căn trái chuỗi trong một khoảng có độ rộng width, đệm bằng ký tự fillchar (mặc định là khoảng trắng).
lower()Chuyển đổi tất cả các chữ cái in hoa trong chuỗi thành chữ thường.
lstrip()Xóa tất cả các khoảng trắng ở đầu chuỗi.
maketrans()Tạo một bảng ánh xạ (translation table) để sử dụng với hàm translate.
partition()Tách chuỗi thành ba phần (dạng tuple) tại vị trí xuất hiện đầu tiên của chuỗi phân cách(separator).
removeprefix()Trả về một chuỗi sau khi xoá tiền tố
removesuffix(Trả về một chuỗi sau khi xoá hậu tố
replace(old, new [, max])Thay thế tất cả các lần xuất hiện của chuỗi old bằng chuỗi new, hoặc tối đa max lần nếu cung cấp max.
rfind(str, beg=0, end=len(string))Giống như find(), nhưng tìm kiếm từ phía cuối chuỗi.
rindex(str, beg=0, end=len(string))Giống như index(), nhưng tìm kiếm từ phía cuối chuỗi.
rjust(width[, fillchar])Căn phải chuỗi trong một khoảng có độ rộng width, đệm bằng fillchar (mặc định là khoảng trắng).
rpartition()Tách chuỗi thành ba phần tại vị trí xuất hiện cuối cùng của chuỗi phân cách.
rsplit()Tách chuỗi từ phía cuối và trả về một danh sách các chuỗi con.
rstrip()Xóa tất cả các khoảng trắng ở cuối chuỗi.
split(str="", num=string.count(str))Tách chuỗi thành một danh sách các chuỗi con dựa trên str (mặc định là khoảng trắng). Có thể giới hạn số lần tách bằng num
splitlines(num=string.count('\n'))Tách chuỗi tại các dòng mới (NEWLINE) và trả về một danh sách các dòng (đã loại bỏ ký tự xuống dòng).
startswith(str, beg=0, end=len(string))Kiểm tra xem chuỗi (hoặc chuỗi con) có bắt đầu bằng str hay không. Trả về True nếu có, False nếu không.
strip([chars])Xóa các khoảng trắng (hoặc các ký tự chars nếu được cung cấp) ở cả đầu và cuối chuỗi.
swapcase()Đảo ngược kiểu chữ hoa/thường của tất cả các chữ cái trong chuỗi.
title()Trả về phiên bản “viết hoa kiểu tiêu đề” của chuỗi: viết hoa chữ cái đầu mỗi từ và các chữ cái còn lại viết thường.
translate(table, deletechars="")Biến đổi chuỗi theo bảng ánh xạ table, xóa các ký tự trong chuỗi deletechars.
upper()Chuyển đổi tất cả các chữ cái thường trong chuỗi thành chữ hoa.
zfill(width)Đệm thêm số 0 vào đầu chuỗi cho đến khi chuỗi đạt độ dài width. Phương thức này thường dùng cho các chuỗi số, giữ nguyên dấu.

Các hàm tích hợp sẵn thường dùng với chuỗi

Dưới đây là các hàm tích hợp sẵn mà chúng ta có thể sử dụng với chuỗi:

HàmMô tả
len(chuỗi)Trả về độ dài (số lượng ký tự) của chuỗi.
max(chuỗi)Trả về ký tự có giá trị lớn nhất theo bảng chữ cái (thứ tự alphabet) trong chuỗi.
min(chuỗi)Trả về ký tự có giá trị nhỏ nhất theo bảng chữ cái (thứ tự alphabet) trong chuỗi.

Lời kết

Như vậy, chúng ta đã cùng nhau khám phá chi tiết về chuỗi trong Python, từ khái niệm cơ bản, cách tạo, truy cập, đến các toán tử và phương thức xử lý chuỗi đa dạng. Hy vọng rằng, với những kiến thức này, bạn có thể tự tin thao tác và ứng dụng chuỗi một cách linh hoạt trong các dự án Python của mình.

Mọi người cũng đọc

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn