Str trong Python là gì? Kiểu dữ liệu chuỗi và định dạng chuỗi trong Python

18535

Bài viết được sự cho phép của tác giả Kien Dang Chung

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

Kiểu dữ liệu chuỗi – string trong Python là một trong những kiểu dữ liệu cơ bản và được sử dụng rất phổ biến trong Python, một từ, một đoạn văn bản đều là kiểu chuỗi.

Chuỗi (string) được đặt trong dấu ngoặc kép, có thể là dấu ngoặc kép đơn (”) hoặc dấu ngoặc kép đôi (“”). Ví dụ: "Hello, World!" hay 'Python'

str trong Python là một lớp (class) được sử dụng để biểu diễn và xử lý các chuỗi ký tự.

1.1 Chuỗi đơn giản

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 ý"

Tuyển dụng lập trình python lương cao cho bạn

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)
  Cú pháp cơ bản trong lập trình Python
  Biến và kiểu dữ liệu cơ bản trong Python

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 Các phương thức của str trong Python

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 str trong Python như sau:

variable_string = "Some thing"
variable_string.methodname(params)
  • str.lower(): Chuyển đổi tất cả các ký tự trong chuỗi thành chữ thường.
  • str.upper(): Chuyển đổi tất cả các ký tự trong chuỗi thành chữ hoa.
  • str.strip(): Loại bỏ các khoảng trắng từ đầu và cuối chuỗi.
  • str.replace(old, new): Thay thế tất cả các xuất hiện của chuỗi con old bằng chuỗi new.
  • str.split(separator): Tách chuỗi thành danh sách các chuỗi con dựa trên ký tự phân cách separator.
  • str.join(iterable): Kết hợp các chuỗi từ một iterable thành một chuỗi duy nhất với ký tự phân cách.
  • 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.
  • 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

Tuyển dụng python Hồ Chí Minh mới nhất trên TopDev

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

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

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.

  Lệnh if, elif, if else trong Python là gì?

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() trong Python:

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.

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

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.

Bài viết gốc được đăng tải tại allaravel.com

Xem thêm việc làm công nghệ thông tin hấp dẫn trên TopDev