Ra mắt hai series mới cực hot Trí tuệ nhân tạo A đến ZPython công cụ không thể thiếu khi nghiên cứu Data science, Machine learning.

Kiểu dữ liệu chuỗi và định dạng chuỗi trong Python

Video trong bài viết

Xử lý văn bản là công việc thường xuyên trong các ứng dụng hiện đại, văn bản có ở khắp mọi nơi, do vậy nắm vững kiến thức về kiểu chuỗi sẽ giúp bạn giải quyết được các vấn đề.

1. Kiểu dữ liệu chuỗi

1.1 Chuỗi đơn giản

Chuỗi ký tự (string) là một kiểu dữ liệu rất hay dùng trong Python, một từ, một đoạn văn bản đều là kiểu chuỗi. Chuỗi trong Python được đánh dấu bằng dấu nháy đơn ' hoặc nháy kép ", tuy nhiên nếu bắt đầu bằng dấu nào thì phải kết thúc bằng dấu đấy. Ví dụ:

first_name = "Nguyễn"
middle_name = 'Văn'

last_name = 'A" # Lỗi khi thực hiện do bắt đầu và kết thúc chuỗi khác nhau.

Khi muốn đưa các dấu nháy đơn và nháy kép vào trong chuỗi có hai cách:

Cách 1: Đóng mở chuỗi bằng dấu khác với loại dấu nháy cần đưa vào chuỗi.

speech = 'Một chuyên gia nói: "Python hiện là ngôn ngữ được nhiều người tìm hiểu nhất hiện nay", phát biểu tại Ngày hội Trí tuệ nhân tạo 2019'

sentence = "It 's my car"

Cách 2: Sử dụng dấu gạch chéo \, dấu này giúp Python nhận biết là phải bỏ qua ngữ nghĩa của ký tự ngay sau.

example = "Trong một câu có thể có nhiều dấu \" và dấu \' với số lượng tùy ý"

1.2 Chuỗi ký tự nhiều dòng

Python hỗ trợ kiểu dữ liệu chuỗi có thể chứa đoạn văn với nhiều dòng bằng cách bắt đầu và kết thúc chuỗi bằng 3 dấu nháy kép """. Ví dụ:

chuoi_nhieu_dong = """
Một chuyên gia phát biểu:

- \"Python là ngôn ngữ được yêu thích nhất hiện nay\".

Chuyên gia này phát biểu tại Ngày hội Trí tuệ nhân tạo 2019.
"""

Có thể áp dụng chuỗi ký tự nhiều dòng khi comment code, trong Python khi ghi chú thông tin chúng ta sử dụng dấu # ở đầu câu ghi chú, với ghi chú nhiều dòng chúng ta cần nhiều dấu # ở trước các dòng.

# Khóa học Python từ A đến Z
# Bài số 3: Kiểu dữ liệu chuỗi.

# Ví dụ 1: In ra chuỗi "Hello world"
loi_chao = "Hello world"
print(loi_chao)

Nếu đoạn ghi chú dài, việc sử dụng các dấu # là rất bất cập, chúng ta có thể sử dụng chuỗi đa dòng để ghi chú như sau:

""" 
Khóa học Python từ A đến Z
Bài số 3: Kiểu dữ liệu chuỗi.

Ví dụ 1: In ra chuỗi \"Hello world\"
"""
loi_chao = "Hello world"
print(loi_chao)

2. Thao tác với các biến kiểu chuỗi

2.1 Nối chuỗi

Chúng ta có thể nối các chuỗi với nhau thành một chuỗi thông qua toán tử +. Ví dụ:

first_name = "Nguyễn"
middle_name = 'Văn'
last_name = "A"

full_name = first_name + " " + middle_name + " " + last_name
print(full_name)

# Kết quả là Nguyễn Văn A

Chú ý, toán tử nối chuỗi chỉ thực hiện được khi các thành phần là chuỗi, ví dụ dưới đây sẽ gây ra lỗi:

age = 35

print("Tuổi của bạn là:" + age)

Do biến age là kiểu số, toán tử nối chuỗi sẽ bị lỗi, nếu muốn nối chuỗi bạn phải chuyển đổi kiểu số sang kiểu chuỗi với hàm str().

age = 35

print("Tuổi của bạn là:" + str(age))

2.2 Độ dài của chuỗi

Đôi khi chúng ta muốn xác định độ dài của một chuỗi để có thể cắt bớt hoặc xử lý cho phù hợp. Ví dụ, tiêu đề của một bài viết là dưới 70 ký tự khi đó chúng ta cần xác định độ dài tiêu đề bài viết. Trong Python sử dụng hàm len() để xác định độ dài chuỗi.

title = "Kiểu dữ liệu chuỗi ký tự và định dạng chuỗi trong Python"
print(len(title))

# Kết quả là 56

2.3 Một số phương thức thao tác chuỗi có sẵn

Mọi chuỗi trong Python đều là đối tượng str, do đó bản thân nó có rất nhiều các hàm nội tại dùng để thao tác với nội dung của chuỗi. Cú pháp sử dụng các hàm này như sau:

variable_string = "Some thing"
variable_string.methodname(params)

Có rất nhiều các hàm nội tại, chúng ta có thể tham khảo một số các hàm hay dùng như sau:

  • isalpha: trả về true nếu chuỗi chỉ chứa chữ cái A-Z và a-z.
  • isnumeric: trả về true nếu chuỗi chứa chỉ các chữ số 0-9.
  • lower: chuyển tất cả các chữ cái trong chuỗi thành chữ thường.
  • upper: chuyển tất cả các chữ cái trong chuỗi thành chữ hoa.
  • find(x, [y.z]): trả về số lần chuỗi x được tìm thấy trong chuỗi gốc, tùy chọn [y.z] giới hạn vị trí tìm kiếm, trả về -1 nếu không tìm thấy.
  • replace(x, y): thay thế chuỗi x thành chuỗi y trong chuỗi gốc.

Ví dụ:

my_name = "Nguyen Van A"

print(my_name.isalpha) # trả về true
print(my_name.isnumeric) # trả về false
print(my_name.lower) # trả về nguyen van a
print(my_name.upper) # trả về NGUYEN VAN A
print(my_name.find("an")) # trả về 1
print(my_name.replace("Nguyen", "Tran")) # trả về Tran Van A

3. Định dạng chuỗi

3.1 Định dạng với F-string

Định dạng f-string khá đơn giản khi sử dụng, tất cả những gì cần là một chữ f đứng trước một chuỗi thì tất cả các biểu thức (nằm trong cặp đóng mở ngoặc nhọn) sẽ được thực thi và chuyển đổi thành chuỗi và thay thế vào biểu thức đó. Trong ví dụ ở phần trên

age = 35

print("Tuổi của bạn là:" + str(age))

Chúng ta có thể sử dụng định dạng f-string như sau:

age = 35

print(f"Tuổi của bạn là: {age}")

Biểu thức trong {age} sẽ được tính toán và chuyển đổi thành chuỗi và thay thế lại vị trí cũ, do đó kết quả nhận được là "Tuổi của bạn là: 35". Một ví dụ khác sẽ giúp bạn hiểu rõ hơn:

don_gia = 25000
chiet_khau = 0.25
so_luong = 3

print(f"Bạn mua {so_luong} dia com het tong cong: {don_gia * so_luong} VND")
# Kết quả in ra: Ban mua 3 dia com het tong cong: 75000 VND

print(f"Bạn mua {so_luong} dia com het tong cong: {don_gia * so_luong:,} VND")
# Kết quả in ra: Ban mua 3 dia com het tong cong: 75,000 VND

print(f"Ban duoc chiet khau {chiet_khau:.2%}")
# Kết quả in ra: Ban duoc chiet khau 25%

F-string cũng cho phép chúng ta định dạng số với các dấu phân cách hàng nghìn (,) hoặc định dạng số theo phần trăm (.2%). Một điểm chú ý là f-string nếu sử dụng cho biến số sẽ không thay đổi giá trị khi các thành phần của biến số thay đổi.

don_gia = 25000
so_luong = 3
thong_bao = f"Bạn mua {so_luong} dia com het tong cong: {don_gia * so_luong} VND"

print(thong_bao)
# Kết quả in ra: Ban mua 3 dia com het tong cong: 75000 VND

don_gia = 35000
so_luong = 5

print(thong_bao)
# Kết quả in ra: Ban mua 3 dia com het tong cong: 75000 VND

F-string không thay đổi khi biến thay đổi

Bạn thấy đấy, khi thay đổi số lượng và đơn giá nhưng thông báo in ra vẫn giữ nguyên.

3.2 Định dạng chuỗi với phương thức format()

Bản thân biến dạng chuỗi là một đối tượng str có một hàm nội tại là format() dùng để định dạng nội dung. Ví dụ dưới đây sử dụng hàm format() này để định dạng chuỗi.

ten_nguoi_dung = "Nguyen Van A"
cau_chao = "Chao ban {}!"
cau_chao_a = cau_chao.format(ten_nguoi_dung)
print(cau_chao_a)

Nếu bạn muốn có nhiều biến được đưa vào trong nội dung chuỗi, chúng ta cần phải đặt tên cho các vị trí này. Ví dụ:

don_gia = 25000
so_luong = 3
tong_tien = don_gia * so_luong
mau_thong_bao = "Bạn mua {so_luong} dia com het tong cong: {tong_tien} VND"

thong_bao = mau_thong_bao.format(so_luong=so_luong,tong_tien=tong_tien)
print(thong_bao)

don_gia = 35000
so_luong = 5
tong_tien = don_gia * so_luong
mau_thong_bao = "Bạn mua {so_luong} dia com het tong cong: {tong_tien} VND"

thong_bao = mau_thong_bao.format(so_luong=so_luong,tong_tien=tong_tien)
print(thong_bao)

Kết quả chúng ta đạt được như mong muốn.

Ví dụ về hàm format

Trong một số ví dụ, tôi có sử dụng Jupyter Notebook chạy trên máy cá nhân, nếu bạn muốn tìm hiểu về phần mềm này có thể tham khảo bài viết Jupyter Notebook công cụ không thể thiếu khi học Python.


CÁC BÀI VIẾT KHÁC

FirebirD

Đam mê Toán học, Lập trình. Sở thích chia sẻ kiến thức, Phim hài, Bóng đá, Cà phê sáng với bạn bè.

Biến số và kiểu dữ liệu số trong Python

Lý thuyết toán ma trận sử dụng trong các thuật toán Machine Learning

0 Bình luận trong "Kiểu dữ liệu chuỗi và định dạng chuỗi trong Python"

Thêm bình luận