Làm cách nào để kiểm tra xem một từ có chứa một chữ cái trong python không?

Một trong những hoạt động phổ biến nhất mà các lập trình viên sử dụng trên chuỗi là kiểm tra xem một chuỗi có chứa một số chuỗi khác không

Ví dụ: nếu bạn đến với Python từ Java, bạn có thể đã sử dụng phương thức chứa để kiểm tra xem một số chuỗi con có tồn tại trong một chuỗi khác không

Trong Python, có hai cách để đạt được điều này

Ngày thứ nhất. Sử dụng toán tử in

Cách dễ nhất là thông qua toán tử in của Python.

Hãy xem ví dụ này

>>> str = "Messi is the best soccer player"
>>> "soccer" in str
True
>>> "football" in str
False

Như bạn có thể thấy, toán tử in trả về True khi chuỗi con tồn tại trong chuỗi

Nếu không, nó trả về false

Phương pháp này rất đơn giản, rõ ràng, dễ đọc và thành ngữ

Thứ hai. Sử dụng phương pháp tìm

Một phương thức khác mà bạn có thể sử dụng là phương thức find của chuỗi

Không giống như toán tử in được ước tính thành giá trị boolean, phương thức find trả về một số nguyên.

Số nguyên này về cơ bản là chỉ số của phần đầu của chuỗi con nếu chuỗi con tồn tại, nếu không thì -1 được trả về

Hãy xem hoạt động của phương thức find .

>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0

Một điều thú vị về phương pháp này là bạn có thể tùy chọn chỉ định chỉ mục bắt đầu và chỉ mục kết thúc để giới hạn tìm kiếm của mình trong phạm vi

Ví dụ

>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1

Lưu ý cách -1 được trả về cho “Messi” vì bạn đang giới hạn tìm kiếm của mình trong chuỗi chỉ giữa các chỉ số 5 và 25.

Bảng cheat Python 3 cho người mới bắt đầu

Làm cách nào để kiểm tra xem một từ có chứa một chữ cái trong python không?

Tải xuống một bảng cheat toàn diện dành cho người mới bắt đầu với các ví dụ mã mở rộng bao gồm tất cả các chủ đề mà bạn cần tìm hiểu

Một số nội dung nâng cao

Giả sử trong một giây rằng Python không có các hàm hoặc phương thức tích hợp sẵn để kiểm tra xem một chuỗi có chứa một chuỗi khác không

Làm thế nào bạn sẽ viết một chức năng để làm điều đó?

Chà, một cách dễ dàng là dùng vũ lực bằng cách kiểm tra xem chuỗi con có tồn tại bắt đầu từ mọi vị trí có thể có trong chuỗi gốc hay không

Đối với các chuỗi lớn hơn, quá trình này có thể rất chậm

Có các thuật toán tốt hơn để tìm kiếm chuỗi

Tôi đánh giá cao bài viết này từ TopCoder nếu bạn muốn tìm hiểu thêm và tìm hiểu sâu hơn về các thuật toán tìm kiếm chuỗi

Để biết thêm thông tin về các thuật toán tìm kiếm chuỗi khác không được đề cập trong bài viết trước, trang wikipedia này rất hay

Nếu bạn xem qua các bài viết trước và nghiên cứu chúng, câu hỏi tiếp theo của bạn sẽ là “Python thực sự sử dụng thuật toán nào?”

Một cách dễ dàng để kiểm tra xem một chuỗi có chứa một cụm từ cụ thể hay không bằng cách sử dụng câu lệnh

Apples in string

Learn Data Science with

Làm cách nào để kiểm tra xem một từ có chứa một chữ cái trong python không?

6. Chúng ta có thể làm điều này như sau

if 'apples' in 'This string has apples':
    print('Apples in string')
else:
    print('Apples not in string')

Learn Data Science with

Ngoài

Apples in string

Learn Data Science with

Hôm nay chúng ta sẽ xem xét các tùy chọn khác nhau mà bạn có để kiểm tra xem một chuỗi có chứa chuỗi con hay không. Chúng ta sẽ bắt đầu bằng cách khám phá việc sử dụng các câu lệnh

Apples in string

Learn Data Science with

6, tiếp theo là sử dụng hàm
Apples in string

Learn Data Science with

8. Cuối cùng, cũng có một phần về cách sử dụng biểu thức chính quy (regex) với
Apples in string

Learn Data Science with

9 để tìm kiếm chuỗi

lựa chọn 1. nếu. Trong

Ví dụ trên đã minh họa một cách nhanh chóng để tìm một chuỗi con trong một chuỗi khác bằng cách sử dụng câu lệnh

Apples in string

Learn Data Science with

6. Câu lệnh sẽ trả về
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
01 nếu chuỗi chứa những gì chúng tôi đang tìm kiếm và
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
02 nếu không. Xem bên dưới để biết phần mở rộng của ví dụ được sử dụng trước đây

>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
0

Ngoài

>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
3

Kết quả hiển thị rằng câu lệnh

Apples in string

Learn Data Science with

6 của chúng tôi đang tìm kiếm
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
04 chỉ trả về
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
01 cho mục đầu tiên trong
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
06, điều này đúng

Điều đáng nói là các câu lệnh

Apples in string

Learn Data Science with

6 phân biệt chữ hoa chữ thường. Dòng
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
08 sẽ không phát hiện ra
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
09. Một cách để sửa lỗi này là sử dụng phương thức
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
30, phương thức này chuyển đổi tất cả các ký tự chuỗi thành chữ thường

Chúng ta có thể sử dụng phương pháp

>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
30 với sự thay đổi bên dưới

>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
3

Ngoài

>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
4

Ngoài ra, chúng ta có thể sử dụng hàm

>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
32 để tìm kiếm
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
33 thay thế

Cách tiếp cận

>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
34 có hiệu suất nhanh nhất trong hầu hết các trường hợp. Nó cũng có khả năng đọc tuyệt vời, giúp các nhà phát triển khác dễ dàng hiểu tập lệnh làm gì

Trong số ba tùy chọn được liệt kê trong bài viết này, sử dụng

Apples in string

Learn Data Science with

6 thường là cách tiếp cận tốt nhất để xem liệu một chuỗi có chứa chuỗi con hay không. Hãy nhớ rằng giải pháp đơn giản nhất thường là giải pháp tốt nhất

Lựa chọn 2. tìm thấy()

Một tùy chọn khác mà bạn có để tìm kiếm một chuỗi là sử dụng phương thức

Apples in string

Learn Data Science with

8. Nếu đối số chúng tôi cung cấp
Apples in string

Learn Data Science with

8 tồn tại trong một chuỗi, thì hàm sẽ trả về chỉ mục vị trí bắt đầu của chuỗi con mà chúng tôi đang tìm kiếm. Nếu không, hàm sẽ trả về -1. Hình ảnh bên dưới cho thấy cách các ký tự chuỗi được gán chỉ mục

Làm cách nào để kiểm tra xem một từ có chứa một chữ cái trong python không?

Chúng ta có thể áp dụng

Apples in string

Learn Data Science with

8 cho ví dụ đầu tiên của
Apples in string

Learn Data Science with

6 như sau

Apples in string

Learn Data Science with

3

Ngoài

Apples in string

Learn Data Science with

4

Đối với mục danh sách đầu tiên,

>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
04 bắt đầu ở chỉ mục 16, vì vậy,
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
31 trả về 16.
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
04 không có trong chuỗi cho hai mục còn lại, vì vậy,
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
31 trả về -1

Hàm

>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
34 có thể được sử dụng tương tự và cũng sẽ trả về chỉ số bắt đầu của đối số của nó. Nhược điểm của việc sử dụng
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
34 là nó sẽ ném ra
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
36 nếu Python không thể tìm thấy đối số. Các hàm
Apples in string

Learn Data Science with

8 và
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
34 cũng phân biệt chữ hoa chữ thường

Tùy chọn 3. Tìm kiếm chính quy()

Regex là viết tắt của biểu thức chính quy, giống như ngôn ngữ lập trình của chính nó. Thông qua

>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
39, tìm kiếm biểu thức chính quy, chúng tôi có thể xác định xem một chuỗi có khớp với mẫu không. Hàm
Apples in string

Learn Data Science with

9 tạo đối tượng
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
41 nếu mẫu phù hợp

Đây là một ví dụ

if 'apples' in 'This string has apples':
    print('Apples in string')
else:
    print('Apples not in string')

Learn Data Science with

7

Ngoài

if 'apples' in 'This string has apples':
    print('Apples in string')
else:
    print('Apples not in string')

Learn Data Science with

8

Nhìn vào đối tượng

>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
41,
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
43 cho chúng ta chỉ số bắt đầu và kết thúc của
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
04. Cắt chuỗi bằng cách sử dụng
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
45 trả về chuỗi con
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
04. Trường
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
47 hiển thị cho chúng tôi một phần của chuỗi trùng khớp, điều này có thể hữu ích khi tìm kiếm một loạt các chuỗi con có thể đáp ứng các điều kiện tìm kiếm

Chúng ta có thể truy cập các thuộc tính

>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
43 và
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
47 bằng cách sử dụng các phương thức
Apples in string

Learn Data Science with

30 và
Apples in string

Learn Data Science with

31, như sau

Apples in string

Learn Data Science with

0

Ngoài

Apples in string

Learn Data Science with

1

Nếu chuỗi con không khớp, chúng tôi nhận giá trị null

Apples in string

Learn Data Science with

32 thay vì nhận đối tượng
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
41. Xem ví dụ bên dưới để biết cách chúng tôi có thể áp dụng regex cho vấn đề
Apples in string

Learn Data Science with

34 mà chúng tôi đang sử dụng

Apples in string

Learn Data Science with

2

Ngoài

>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
3

Trong trường hợp này, câu lệnh if xác định xem

Apples in string

Learn Data Science with

9 có trả về bất kỳ thứ gì khác ngoài
Apples in string

Learn Data Science with

32 hay không

Chúng tôi có thể lập luận rằng regex có thể là quá mức cần thiết cho một chức năng đơn giản như thế này. Nhưng một cái gì đó giống như ví dụ trên là điểm khởi đầu tuyệt vời cho biểu thức chính quy, có nhiều khả năng khác

Chẳng hạn, chúng ta có thể thay đổi đối số đầu tiên của hàm

Apples in string

Learn Data Science with

37 thành
Apples in string

Learn Data Science with

38, trong đó
Apples in string

Learn Data Science with

39 là toán tử logic "HOẶC". Trong ngữ cảnh này,
Apples in string

Learn Data Science with

9 sẽ trả về một đối tượng khớp cho bất kỳ chuỗi nào có chuỗi con
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
04 hoặc
Apples in string

Learn Data Science with

42

Sau đây minh họa một ví dụ về điều này

Apples in string

Learn Data Science with

4

Ngoài

Apples in string

Learn Data Science with

5

Bản tóm tắt

Cách dễ nhất và hiệu quả nhất để xem liệu một chuỗi có chứa chuỗi con hay không là sử dụng câu lệnh

Apples in string

Learn Data Science with

6, trả về
>>> str = "Messi is the best soccer player"
>>> str.find("soccer")
18
>>> str.find("Ronaldo")
-1
>>> str.find("Messi")
0
01 nếu chuỗi con được phát hiện. Ngoài ra, bằng cách sử dụng hàm
Apples in string

Learn Data Science with

8, có thể lấy chỉ mục mà chuỗi con bắt đầu tại đó hoặc -1 nếu Python không thể tìm thấy chuỗi con. REGEX cũng là một tùy chọn, với
Apples in string

Learn Data Science with

9 tạo đối tượng
>>> str = "Messi is the best soccer player"
>>> str.find("soccer", 5, 25)
18
>>> str.find("Messi", 5, 25)
-1
41 nếu Python tìm thấy đối số đầu tiên trong đối số thứ hai

Bắt đầu học miễn phí

Nhận thông tin cập nhật trong hộp thư đến của bạn

Tham gia cùng hơn 7.500 người học khoa học dữ liệu

Bài viết gần đây

Ưu đãi khóa học tốt nhất cho Thứ Sáu Đen và Thứ Hai Điện Tử 2022
Hàm sigmoid
chấm sản phẩm
7 khóa học về trí tuệ nhân tạo (AI) tốt nhất năm 2022

Các khóa học Python tốt nhất theo phân tích dữ liệu

Trong số khoảng 3000 dịch vụ, đây là những khóa học Python tốt nhất theo phân tích này

xem bài viết


Nhận thông tin cập nhật trong hộp thư đến của bạn

Tham gia cùng hơn 7.500 người học khoa học dữ liệu

Gặp gỡ các tác giả

Làm cách nào để kiểm tra xem một từ có chứa một chữ cái trong python không?

Nhà khoa học dữ liệu Alfie Grace

Alfie tốt nghiệp Thạc sĩ Kỹ thuật Cơ khí tại Đại học College London. Anh ấy hiện đang làm Nhà khoa học dữ liệu tại Square Enix. Tìm anh ấy trên LinkedIn