Tìm từ trong chuỗi Python

Cách đơn giản nhất để kiểm tra xem một chuỗi có chứa chuỗi con hay không trong Python là sử dụng toán tử in. Điều này sẽ trả về True hoặc False tùy thuộc vào việc có tìm thấy chuỗi con hay không. Ví dụ

sentence = 'There are more trees on Earth than stars in the Milky Way galaxy'
word = 'galaxy'

if word in sentence:
    print('Word found.')

# Word found.

phân biệt chữ hoa chữ thường

Lưu ý rằng ví dụ trên phân biệt chữ hoa chữ thường nên các từ sẽ cần có cùng cách viết hoa để trả về True. Nếu muốn thực hiện tìm kiếm không phân biệt chữ hoa chữ thường, bạn có thể chuẩn hóa các chuỗi bằng cách sử dụng các phương thức lower() hoặc upper() như thế này

sentence = 'There are more trees on Earth than stars in the Milky Way galaxy'
word = 'milky'

if word in sentence.lower():
    print('Word found.')

# Word found.

Tìm chỉ số của một chuỗi con

Để tìm chỉ mục của một chuỗi con trong một chuỗi, bạn có thể sử dụng phương thức 

sentence = 'There are more trees on Earth than stars in the Milky Way galaxy'
word = 'milky'

if word in sentence.lower():
    print('Word found.')

# Word found.
0. Điều này sẽ trả về giá trị chỉ mục bắt đầu của chuỗi con nếu nó được tìm thấy. Nếu không tìm thấy chuỗi con, nó sẽ trả về -1

sentence = 'There are more trees on Earth than stars in the Milky Way galaxy'

print(sentence.find('Earth'))
print(sentence.find('Moon'))

# 24
# -1

Đếm chuỗi con

Bạn cũng có thể đếm các chuỗi con trong một chuỗi bằng phương pháp 

sentence = 'There are more trees on Earth than stars in the Milky Way galaxy'
word = 'milky'

if word in sentence.lower():
    print('Word found.')

# Word found.
1, phương thức này sẽ trả về số chuỗi con khớp. Ví dụ

Hàm find() trả về số chỉ mục của lần xuất hiện đầu tiên của cụm từ tìm kiếm đã cho trong chuỗi đã chỉ định. Nếu chuỗi được chỉ định không chứa cụm từ tìm kiếm, hàm find() trả về -1

Một vài ví dụ nhanh

Một ví dụ find() có tham số ví dụ rfind

Lần xuất hiện đầu tiên có nghĩa là nếu cụm từ tìm kiếm tồn tại hai lần trở lên trong chuỗi nguồn thì nó sẽ trả về chỉ mục thấp nhất;

Nếu bạn muốn trả về chỉ số cao nhất của cụm từ tìm kiếm thì hãy sử dụng hàm rfind(). Xem ví dụ về rfind() ở phần sau hoặc bằng cách nhấp vào liên kết ở trên

Cú pháp sử dụng phương thức find

Đây là cách bạn có thể sử dụng phương thức find() chuỗi

str. tìm (phụ [, bắt đầu [, kết thúc]])

Một vài điểm chính về phương pháp tìm là

  • Bạn có thể chỉ định chỉ mục bắt đầu để bắt đầu tìm kiếm chuỗi đã cho
  • Chỉ số kết thúc cũng có thể được chỉ định
  • Giá trị mặc định cho tham số bắt đầu là 0 i. e. nó bắt đầu tìm kiếm chuỗi từ đầu
  • Giá trị mặc định của tham số kết thúc là độ dài của chuỗi i. e. cụm từ tìm kiếm đã cho sẽ được tìm kiếm từ chỉ mục bắt đầu đến cuối chuỗi
  • Bạn chỉ nên sử dụng phương thức tìm nếu cụm từ tìm kiếm/vị trí chuỗi con được yêu cầu
  • Bạn nên sử dụng toán tử in để biết chuỗi con có phải là chuỗi con hay không

Xem phần sau để biết cách sử dụng các phương thức find() và rfind của Python. Tôi sẽ trình bày một ví dụ về cách sử dụng toán tử in để tìm kiếm trong một chuỗi (ví dụ cuối cùng)

Một ví dụ về hàm find() với các giá trị mặc định

Trong ví dụ về phương thức find() này, không có giá trị nào được truyền trong phương thức find(). Vì vậy, các giá trị mặc định sẽ được sử dụng cho các chỉ số bắt đầu và kết thúc để cho biết chỉ số thấp nhất của chuỗi con đã cho

Xem bản demo và mã trực tuyến

1

2

3

4

5

6

7

8

9

10

11

12

13

#Bản demo của hàm find()

 

src_str = 'Kiểm tra xem chuỗi có chứa từ được yêu cầu không?'

 

 

 

sub_index = src_str. tìm('chứa')

 

 

 

print("Chuỗi nguồn. " ,src_str)

 

in("Vị trí của từ 'chứa'. ", sub_index)


Tìm từ trong chuỗi Python

Điều gì xảy ra nếu chuỗi con xảy ra hai lần trở lên?

Như đã đề cập trước đó, hàm find() sẽ trả về chỉ số thấp nhất nếu xuất hiện chuỗi con/thuật ngữ tìm kiếm là hai hoặc nhiều hơn trong chuỗi đã cho. Có một cái nhìn trong ví dụ này

Xem bản demo và mã trực tuyến

1

2

3

4

5

6

7

8

9

10

11

src_str = 'Phương thức chuỗi tìm kiếm Python. Phương thức trả về chỉ số thấp nhất. '

 

 

 

sub_index = src_str. tìm('phương pháp')

 

 

 

print("Chuỗi nguồn. " ,src_str)

 

in("Chỉ mục của từ 'phương thức'. ", sub_index)


Tìm từ trong chuỗi Python

Bạn đã thấy, chuỗi nguồn chứa từ 'phương thức' hai lần và phương thức tìm đã trả về chỉ mục của lần xuất hiện đầu tiên

Một ví dụ nếu chuỗi con không tồn tại

Xem giá trị trả về nếu không tìm thấy chuỗi con tìm kiếm đã cho trong chuỗi nguồn. Vì vậy, chức năng in được sử dụng để lấy chuỗi con do người dùng nhập. Chuỗi con đã nhập được kiểm tra đối chiếu với chuỗi nguồn bằng cách sử dụng phương thức find()

Xem bản demo và mã trực tuyến

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#Bản demo của hàm find() với đầu vào của người dùng

 

Your_sub = input("Nhập chuỗi con vào)

 

src_str = 'Hãy cho chúng tôi xem chuỗi này có chứa cụm từ tìm kiếm mà bạn đã nhập hay không?'

 

 

 

 

 

sub_index = src_str. tìm(Your_sub)

 

 

 

print("Chuỗi nguồn. " ,src_str)

 

in("Chỉ mục của từ '" ,Your_sub ,"' : " ,sub_index)


Tìm từ trong chuỗi Python

Tôi đã chạy chương trình hai lần; . Lần thứ hai tôi nhập từ “thuật ngữ” và kết quả là 45. Hãy thử chạy chương trình này trong shell của bạn và xem nó hoạt động như thế nào

Sử dụng ví dụ về tham số bắt đầu và kết thúc

Đối với ví dụ này, thuật ngữ tìm kiếm hoặc chuỗi con được tìm kiếm trong chuỗi nguồn được cắt lát. Nghĩa là, chuỗi nguồn được cắt bằng cách sử dụng tham số bắt đầu và kết thúc. Đối với điều đó, chuỗi nguồn sau được tạo

“Đây là Hướng dẫn Python. Trăn thật tuyệt. ”

Xem bản demo và mã trực tuyến

1

2

3

4

5

6

7

8

9

10

11

src_str = 'Đây là Hướng dẫn Python. Trăn thật tuyệt. '

 

 

 

sub_index = src_str. tìm('Python',17,35)

 

 

 

in("Nguồn. " ,src_str)

 

in("Chỉ mục của từ 'Python'. ", sub_index)


Tìm từ trong chuỗi Python

Trong chuỗi nguồn, từ “Python” xuất hiện đầu tiên ở vị trí thứ 10. Tuy nhiên, vì chúng tôi đã đưa ra chỉ số bắt đầu là 17 và kết thúc là 35, nên phương thức find trả về chỉ số của lần xuất hiện thứ hai là 27

Lấy ví dụ về chỉ số cao nhất bằng phương thức rfind()

Sự khác biệt duy nhất giữa phương thức find() và rfind() là rfind() trả về vị trí chỉ số lớn nhất của chuỗi con. Phương thức rfind sử dụng cùng tham số và trả về số chỉ mục

Xem minh họa bên dưới nơi một chuỗi có từ "is" xuất hiện hai lần. Phương thức rfind() được sử dụng để trả về số chỉ mục và xem kết quả

Xem bản demo và mã trực tuyến

1

2

3

4

5

6

7

8

9

10

11

src_str = 'Đây là phương thức rfind(). Trở thành Pythonic thật tuyệt. '

 

 

 

sub_index = src_str. rfind('is')

 

 

 

in("Nguồn. " ,src_str)

 

in("Chỉ số của từ 'là'. ", sub_index)


Tìm từ trong chuỗi Python

Đầu ra hiển thị vị trí chỉ mục của “is” 39. cái này lớn nhất

Một ví dụ về việc sử dụng toán tử in

Như tôi đã đề cập trong phần trên, trang web chính thức của Python khuyến nghị sử dụng phương thức find() để lấy vị trí của sub (chuỗi con/thuật ngữ tìm kiếm). Nếu bạn cần kiểm tra xem chuỗi con có phải là chuỗi con hay không trong chuỗi đã chỉ định thì hãy sử dụng toán tử in

Sub trong str sẽ trả về true nếu chuỗi con được tìm thấy trong chuỗi đã cho. Sub là viết tắt của cụm từ tìm kiếm và str là chuỗi nguồn – nơi bạn muốn tìm sub