Tìm ký tự trong chuỗi python | Laptrinhcanban.com

Tìm ký tự trong chuỗi python

Hướng dẫn tìm ký tự trong chuỗi python. Bạn sẽ học được cách tìm ký tự trong chuỗi python bằng các phương thức có sẵn như find, rfind, index, rindex trong bài viết này. Bạn cũng sẽ học được cách tìm vị trí xuất hiện thứ n của một ký tự trong chuỗi cho trước bằng for i in range trong python sau bài học này.

Python đã tích hợp sẵn một số phương thức giúp bạn tìm vị trí ký tự trong chuỗi như sau:

Tìm ký tự trong chuỗi python bằng phương thức find

Chúng ta sử dụng phương thức find trong python để tìm vị trí ký tự xuất hiện đầu tiên trong chuỗi python với cú pháp sau đây:

Phương thức find cú pháp rút gọn

str.find(sub)

Trong đó sub là chuỗi ký tự cần tìm trong chuỗi str

kết quả trả về sẽ là index của vị trí ký tự sub xuất hiện đầu tiên trong chuỗi str. Và nếu như sub không tồn tại trong str, phương thức find trong python sẽ trả về kết quả -1

※Về index trong chuỗi python, bạn có thể tham khảo tại bài viết Lấy ký tự trong chuỗi python

Cách sử dụng phương thức find trong python thực tiễn giống như ví dụ sau:

print("dictionary".find("io"))
#>> 4

print("Good School".find("oo"))
#>> 1

print("Goooood".find("oo"))
#>> 1

print("Orange".find("aa"))
#>> -1

ở ví dụ đầu tiên, chuỗi io xuất hiện đầu tiên trong chuỗi dictionary tại vị trí có index là 4, do đó phương thức find trong python sẽ trả về kết quả là 4.

dictionary
----------
0123456789

ở ví dụ thứ hai, chuỗi oo xuất hiện hai lần trong chuỗi Good School, tuy nhiên phương thức find trong python sẽ chỉ trả về index tại vị trí chuỗi oo xuất hiện đầu tiên mà thôi.

Good School
-----------
012345678910

ở ví dụ thứ ba, chuỗi oo xuất hiện liên tục 4 lần trong chuỗi Goooood, tuy nhiên phương thức find trong python sẽ chỉ trả về index tại vị trí chuỗi oo xuất hiện đầu tiên mà thôi.

Goooood
-------
0123456

ở ví dụ thứ tư, chuỗi aa do không trong chuỗi Orange, do đó kết quả trả về sẽ là -1

Phương thức find cú pháp tổng quát

str.find(sub, start, end)

Chúng ta cần chỉ định thêm start và end trong cú pháp tổng quát của phương thức find trong python. Bằng cách chỉ định hai đối số này, chúng ta có thể quyết định phạm vi tìm kiếm ký tự sub trong chuỗi str.

kết quả trả về sẽ là index của vị trí ký tự sub xuất hiện đầu tiên tại phạm vi từ start tới end trong chuỗi str. Và nếu như sub không tồn tại trong phạm vi này, phương thức find trong python sẽ trả về kết quả -1

Cách sử dụng phương thức find trong python với cú pháp tổng quát thực tiễn giống như ví dụ sau:

# phương thức find cú pháp rút gọn
print("Good School".find("oo"))
#>> 1

# phương thức find cú pháp tổng quát
print("Good School".find("oo", 3, 10))
#>> 8

# phương thức find cú pháp tổng quát bỏ end
print("Good School".find("oo", 3))
#>> 8

ở ví dụ thứ hai, với việc chỉ định start = 3 và end = 10, chúng ta tiến hành tìm kiếm ký tự oo trong phạm vi index từ 3 đến 10 trong chuỗi Good School. Và vị trí xuất hiện đầu tiên của oo trong phạm vi này là 8, do đó kết quả trả về là 8.

d School
-----------
345678910

ở ví dụ thứ 3, với việc bỏ đi giá trị end, python sẽ mặc định tìm kiếm tới vị trí ký tự cuối cùng trong chuỗi.

Tìm ký tự trong chuỗi python bằng phương thức rfind

Chúng ta sử dụng phương thức rfind trong python để tìm vị trí ký tự xuất hiện cuối cùng trong chuỗi python với cú pháp sau đây:

Phương thức rfind cú pháp rút gọn

str.rfind(sub)

Trong đó sub là chuỗi ký tự cần tìm trong chuỗi str

kết quả trả về sẽ là index của vị trí ký tự sub xuất hiện cuối cùng trong chuỗi str. Và nếu như sub không tồn tại trong str, phương thức rfind sẽ trả về kết quả -1

※Về index trong chuỗi python, bạn có thể tham khảo tại bài viết Lấy ký tự trong chuỗi python

Cách sử dụng phương thức rfind trong python thực tiễn giống như ví dụ sau:

print("dictionary".rfind("io"))
#>> 4

print("Good School".rfind("oo"))
#>> 8

print("Goooood".rfind("oo"))
#>> 4

print("Orange".rfind("aa"))
#>> -1

ở ví dụ đầu tiên, chuỗi io xuất hiện cuối cùng trong chuỗi dictionary tại vị trí có index là 4, do đó phương thức rfind sẽ trả về kết quả là 4.

dictionary
----------
0123456789

ở ví dụ thứ hai, chuỗi oo xuất hiện hai lần trong chuỗi Good School, tuy nhiên phương thức rfind sẽ chỉ trả về index tại vị trí chuỗi oo xuất hiện cuối cùng mà thôi.

Good School
-----------
012345678910

ở ví dụ thứ ba, chuỗi oo xuất hiện liên tục 4 lần trong chuỗi Goooood, tuy nhiên phương thức find sẽ chỉ trả về index tại vị trí chuỗi oo xuất hiện cuối cùng mà thôi.

Goooood
-------
0123456

ở ví dụ thứ tư, chuỗi aa do không trong chuỗi Orange, do đó kết quả trả về sẽ là -1

Phương thức rfind cú pháp tổng quát

str.rfind(sub, start, end)

Chúng ta cần chỉ định thêm start và end trong cú pháp tổng quát của phương thức rfind. Bằng cách chỉ định hai đối số này, chúng ta có thể quyết định phạm vi tìm kiếm ký tự sub trong chuỗi str.

kết quả trả về sẽ là index của vị trí ký tự sub xuất hiện cuối cùng tại phạm vi từ start tới end trong chuỗi str. Và nếu như sub không tồn tại trong phạm vi này, phương thức rfind sẽ trả về kết quả -1

Cách sử dụng phương thức rfind với cú pháp tổng quát thực tiễn giống như ví dụ sau:

# phương thức rfind cú pháp rút gọn
print("Good School".rfind("oo"))
#>> 8

# phương thức rfind cú pháp tổng quát
print("Good School".rfind("oo", 0, 6))
#>> 1

# phương thức rfind cú pháp tổng quát bỏ end
print("Good School".rfind("oo", 3))
#>> 8

ở ví dụ thứ hai, với việc chỉ định start = 0 và end = 6, chúng ta tiến hành tìm kiếm ký tự oo trong phạm vi index từ 0 đến 6 trong chuỗi Good School. Và vị trí xuất hiện cuối cùng của oo trong phạm vi này là 1, do đó kết quả trả về là 8.

G o o d   S c 
-----------
0 1 2 3 4 5 6

ở ví dụ thứ 3, với việc bỏ đi giá trị end, python sẽ mặc định tìm kiếm tới vị trí ký tự cuối cùng trong chuỗi.

Tìm ký tự trong chuỗi python bằng phương thức index

Mục đích sử dụng phương thức index trong python cũng giống với phương thức find, đó là tìm vị trí ký tự xuất hiện đầu tiên trong chuỗi python. Tuy nhiên nếu như ký tự đó không tồn tại trong chuỗi, thì khác với phương thức find đưa ra kết quả -1 thì phương thức index sẽ trả về lỗi ValueError.

Chúng ta sử dụng phương thức index trong python để tìm vị trí ký tự xuất hiện đầu tiên trong chuỗi python với cú pháp cũng tương tự như với phương thức find:

str.index(sub)
str.index(sub, start, end)

Bạn có thể sử dụng cú pháp rút gọn để tìm index của vị trí xuất hiện đầu tiên của sub trong toàn bộ chuỗi str, hoặc chỉ định start và end để quyết định phạm vi tìm kiếm ký tự sub trong chuỗi str.

Cách sử dụng phương thức index thực tiễn giống như ví dụ sau:

print("dictionary".index("io"))
#>> 4

print("Good School".index("oo"))
#>> 1

print("Good School".index("oo", 3 ,10))
#>> 8

print("Good School".index("oo", 3))
#>> 8

Và khi ký tự sub không tồn tại trong chuỗi str, lỗi trả về như sau:

print("Good School".index("aa"))

Lỗi ValueError trả về:

Traceback (most recent call last):
File "Main.py", line 1, in <module>
print("Good School".index("aa"))
ValueError: substring not found

Bạn có thể thấy căn bản cách sử dụng phương thức index giống hệt với phương thức find, tuy nhiên cần chú ý là đối với phương thức index , nếu ký tự cần tìm không tồn tại trong chuỗi thì lỗi sẽ xảy ra khiến cho chương trình bị dừng lại. Do đó bạn cần phải dùng kết hợp với Exception để bỏ qua lỗi và tiếp tục chạy chương trình python.

Tìm ký tự trong chuỗi python bằng phương thức rindex

Mục đích sử dụng phương thức rindex trong python cũng giống với phương thức find, đó là tìm vị trí ký tự xuất hiện cuối cùng trong chuỗi python. Tuy nhiên nếu như ký tự đó không tồn tại trong chuỗi, thì khác với phương thức rfind đưa ra kết quả -1 thì phương thức rindex sẽ trả về lỗi ValueError.

Chúng ta sử dụng phương thức rindex trong python để tìm vị trí ký tự xuất hiện cuối cùng trong chuỗi python với cú pháp cũng tương tự như với phương thức rfind:

str.rindex(sub)
str.rindex(sub, start, end)

Bạn có thể sử dụng cú pháp rút gọn để tìm index của vị trí xuất hiện cuối cùng của sub trong toàn bộ chuỗi str, hoặc chỉ định start và end để quyết định phạm vi tìm kiếm ký tự sub trong chuỗi str.

Cách sử dụng phương thức rindex thực tiễn giống như ví dụ sau:

print("dictionary".rindex("io"))
#>> 4

print("Good School".rindex("oo"))
#>> 8

print("Good School".rindex("oo", 0, 6))
#>> 1

print("Good School".rindex("oo", 3))
#>> 8

Và khi ký tự sub không tồn tại trong chuỗi str, lỗi trả về như sau:

print("Good School".rindex("aa"))

Lỗi ValueError trả về:

Traceback (most recent call last):
File "Main.py", line 1, in <module>
print("Good School".rindex("aa"))
ValueError: substring not found

Bạn có thể thấy căn bản cách sử dụng phương thức rindex giống hệt với phương thức rfind, tuy nhiên cần chú ý là đối với phương thức rindex , nếu ký tự cần tìm không tồn tại trong chuỗi thì lỗi sẽ xảy ra khiến cho chương trình bị dừng lại. Do đó bạn cần phải dùng kết hợp với Exception để bỏ qua lỗi và tiếp tục chạy chương trình python.

Tìm vị trí xuất hiện thứ n của một ký tự trong chuỗi cho trước

Để tìm vị trí xuất hiện thứ n của một ký tự trong chuỗi cho trước, ví dụ như tìm vị trí xuất hiện thứ 3 của ký tự “o” trong chuỗi “Good School”, chúng ta có thể dùng for i in range trong python với mã lệnh như sau:

chuỗi = "Good School"
đếm = 0

#sử dụng vòng lặp for i in range để tìm vị trí thứ 3 của ký tự "o" trong chuỗi
for i in range(len(chuỗi)):
# so sánh ký tự có index i với "o", nếu giống thì tăng đếm đến 3
if chuỗi[i] =="o":
đếm += 1
if đếm == 3: #nếu biến đếm bằng 3 thì in ra kết quả và thoát vòng lặp
print(i)
break
#> 8

Trên đây là cách đơn giản và trực quan nhất mà Kiyoshi muốn giới thiệu cho bạn. Ngoài cách này ra thì còn rất nhiều cách khác đang chờ bạn khám phá đấy.

Tổng kết và thực hành

Trên đây Kiyoshi đã hướng dẫn bạn cách tìm ký tự trong chuỗi python bằng các phương thức có sẵn như find, rfind, index, rindex, cũng như cách tìm vị trí xuất hiện thứ n của một ký tự trong chuỗi cho trước bằng for i in range trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.