Kết nối

[Python] Phần 7: Kiểu dữ liệu chuỗi nâng cao

3.998 lượt xem 
 Cập nhật lần cuối: 18/04/2019 lúc 09:52:11
Thể loại: Python 

Trong bài này, bạn sẽ tiếp tục học về kiểu dữ liệu chuỗi trong Python nhưng với kiến thức nâng cao hơn bài trước.

Duyệt các ký tự trong chuỗi

Bạn có thể dùng vòng lặp while hay for để duyệt các ký tự trong chuỗi ở Python.

Dùng câu lệnh while

Ví dụ dùng vòng lặp while như sau.


s = "dammio"
index = 0

while index < len(s):
	letter = s[index]
	print letter
	index = index + 1

Dùng câu lệnh for

Nếu dùng vòng for đoạn code sẽ đơn giản hơn nhiều. Bạn sẽ dùng thêm toán tử in, tức là lấy một ký tự trong chuỗi cho trước.

s = "dammio"

# Lấy mỗi ký tự đặt vào biến char và hiển thị
for char in s:
	print char

Gán một phần tử trong chuỗi

Bạn không thể gán trực tiếp cho một phần tử trong chuỗi, câu lệnh sau sẽ phát sinh lỗi.

s = "dammio"
s[0] = "t" # Lỗi: 'str' object does not support item assignment

Do đó để gán cho phần tử, bạn nên tạo chuỗi mới và gán cho chuỗi này như sau.

s = "dammio.com"
s1 = "t" + s[1:] # Kết quả: s1 = "tammio.com"
print(s1)

Tìm kiếm ký tự trong chuỗi

Tương tự việc duyệt chuỗi, bạn cũng có thể tìm các ký tự trong chuỗi bằng vòng lặp while hoặc for. Trong ví dụ sau, def là một hàm trong Python với 2 đối số đầu vào word và letter. Nếu tìm thấy thì trả về vị trí tìm thấy, nếu không tìm thấy hàm trả về kết quả là -1.

def find(word, letter):
	index = 0
	while index < len(word):
		if word[index] == letter:
			return index
		index = index + 1
	return -1

print(find("dammio", "a")) #Kết quả là 1

Ngoài ra, bạn có thể dùng hàm find() để tìm kiếm các ký tự trong chuỗi. Hàm find() được định nghĩa như sau:

find(keyword, [index1], [index2])
Trong đó keyword là ký tự/cụm từ cần tìm, index1 là vị trí bắt đầu tìm, index2 là vị trí kết thúc. Index1 và index2 là tham số tùy chọn, có thể có hoặc không. Nếu không tìm thấy hàm này trả về -1.

Hãy cùng xem ví dụ dùng hàm find() sau.

s = "dammio"
kq1 = s.find("m")
print(kq1) #Kết quả: 2 --- do m xuất hiện đầu tiên ở vị trí 2

kq2 = s.find("m", 3)
print(kq2) #Kết quả: 3 --- do tìm từ vị trí 3 trở đi

kq3 = s.find("m", 4, 5)
print(kq3) #Kết quả: -1 --- không tìm thấy m trong đoạn index từ 4 đến 5

Đếm số lần ký tự xuất hiện trong chuỗi

Tương tự, bạn có thể dùng vòng for duyệt từng ký tự trong chuỗi, nếu tìm thấy thì tăng biến đếm count lên 1 và xuất kết quả.

word = "dammio"
count = 0
for letter in word:
	if letter == 'm':
		count = count + 1
print(count) #kết quả: 2

Tìm các ký tự xuất hiện trong cả hai chuỗi

Để tìm các ký tự xuất hiện trong cả 2 chuỗi cho trước, cách đơn giản là dùng vòng for và toán tử in.

def in_both(word1, word2):
    for letter in word1:
        if letter in word2:
            print(letter)

in_both('dammio', 'dormy') #Kết quả là: d, m, m, o

So sánh chuỗi

Bạn có thể so sánh chuỗi trong Python bằng toán tử == hoặc <, > như sau.

word = "bana"
if word == 'banana':
	print('Hai chuỗi bằng nhau')
if word < 'banana':
	print('Chuỗi ban bé hơn banana')
elif word > 'banana':
	print('Chuỗi ban lớn hơn banana')

#Kết quả: Chuỗi ban bé hơn banana.

Lưu ý Python không xử lý trường hợp hoa, thường.

Liên quan:  [Python] Phần 2: Cài đặt Python

Kết luận

Ngoài ra, còn có hàng chục hàm và cách thức để xử lý chuỗi, bạn sẽ học dần khi tiếp xúc với Python qua từng dự án, bài toán cụ thể. Như vậy, bạn đã tìm hiểu được một số phương thức và phương pháp xử lý chuỗi thường dùng trong Python. Mời bạn theo dõi bài tiếp theo để biết đến Python nhiều hơn.

Trích dẫn bài viết
  • APA:
    Dammio. (2019). [Python] Phần 7: Kiểu dữ liệu chuỗi nâng cao. https://www.dammio.com/2019/04/16/python-phan-7-kieu-du-lieu-chuoi-nang-cao.
  • BibTeX:
    @misc{dammio,
    author = {Dammio},
    title = {[Python] Phần 7: Kiểu dữ liệu chuỗi nâng cao},
    year = {2019},
    url = {https://www.dammio.com/2019/04/16/python-phan-7-kieu-du-lieu-chuoi-nang-cao},
    urldate = {2024-12-08}
    }
Theo dõi
Thông báo của
guest
1 Bình luận
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
trackback

[…] [Python] Phần 7: Kiểu dữ liệu chuỗi nâng cao – 333 lượt xem […]

1
0
Rất thích suy nghĩ của bạn, hãy bình luận.x