Làm cách nào để tìm một phần của chuỗi trong python?

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

Đầu tiên. 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

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 hay 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?”

Có cách nào để xâu chuỗi con trong Python, để lấy một chuỗi mới từ ký tự thứ 3 đến cuối chuỗi không?

Có lẽ như myString[2:end]?

Có, điều này thực sự hiệu quả nếu bạn gán, hoặc , tên,____42_______, cho hằng số đơn lẻ, None

>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'

Ký hiệu lát cắt có 3 đối số quan trọng

Giá trị mặc định của chúng khi không được cung cấp là None - nhưng chúng ta có thể chuyển chúng một cách rõ ràng

>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'

Nếu bỏ phần thứ hai có nghĩa là 'cho đến khi kết thúc', nếu bạn bỏ phần đầu tiên, liệu nó có bắt đầu lại từ đầu không?

Vâng, ví dụ

>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'

Lưu ý rằng chúng tôi bao gồm bắt đầu trong lát cắt, nhưng chúng tôi chỉ đi tới và không bao gồm dừng

Khi bước là None, theo mặc định, lát cắt sử dụng 1 cho bước. Nếu bạn bước với số nguyên âm, Python đủ thông minh để đi từ cuối đến đầu

Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng phương thức chuỗi find[] của Python một cách hiệu quả để tìm một chuỗi con trong một chuỗi

Giới thiệu về phương thức tìm chuỗi Python []

find[] là một phương thức chuỗi tìm một chuỗi con trong một chuỗi và trả về chỉ mục của chuỗi con

Sau đây minh họa cú pháp của phương thức find[]

str.find[sub[, start[, end]]]

Code language: CSS [css]

Phương thức find[] chấp nhận ba tham số

  • sub in str

    2 là xâu con cần tìm trong

    sub in str

    3
  • Các tham số

    sub in str

    4 và

    sub in str

    5 được diễn giải như trong lát cắt

    sub in str

    6, chỉ định nơi tìm kiếm chuỗi con

    sub in str

    2

Cả hai tham số

sub in str

4 và

sub in str

5 đều là tùy chọn. Tham số

sub in str

4 mặc định là 0. Và tham số

sub in str

5 mặc định là

s = 'Johny Johny Yes Papa' result = s.find['Python'] print[result]

Code language: PHP [php]
2 trong đó

s = 'Johny Johny Yes Papa' result = s.find['Python'] print[result]

Code language: PHP [php]
3 là độ dài của

sub in str

3

Nếu

sub in str

3 không chứa chuỗi con

sub in str

2 trong lát cắt

sub in str

6, phương thức find[] trả về -1

Trong thực tế, bạn chỉ nên sử dụng phương thức find[] nếu bạn muốn biết vị trí của chuỗi con. Nếu bạn chỉ muốn kiểm tra xem một chuỗi có chứa chuỗi con hay không, bạn nên sử dụng toán tử

0

0 để thay thế

sub in str

Các ví dụ về phương thức find[] chuỗi Python

Hãy lấy một số ví dụ về việc sử dụng phương pháp find[]

1] Sử dụng phương thức find[] chuỗi Python để tìm chuỗi con trong chuỗi

Ví dụ sau đây cho thấy cách sử dụng phương thức find[] để tìm chuỗi con

0

3 trong chuỗi

0

4

s = 'Johny Johny Yes Papa' result = s.find['Python'] print[result]

Code language: PHP [php]

đầu ra

0

Bởi vì chuỗi

0

4 có hai chuỗi con

0

3, phương thức find[] trả về chỉ số của lần xuất hiện đầu tiên của chuỗi con

0

3

2] Sử dụng phương thức find[] chuỗi Python để tìm một chuỗi con trong một chuỗi trong một lát cắt

Ví dụ sau sử dụng phương thức find[] để xác định vị trí chuỗi con

0

3 trong chuỗi

0

4 trong lát cắt

s = 'Johny Johny Yes Papa' result = s.find['Johny', 1] print[result]

Code language: PHP [php]
2

s = 'Johny Johny Yes Papa' result = s.find['Johny', 1] print[result]

Code language: PHP [php]

đầu ra

6

Trong ví dụ này, phương thức find[] trả về chỉ số của lần xuất hiện thứ hai của chuỗi con

0

3 trong chuỗi

0

4

3] Chuỗi con không tồn tại trong ví dụ về chuỗi

Ví dụ sau trả về -1 vì chuỗi con

s = 'Johny Johny Yes Papa' result = s.find['Johny', 1] print[result]

Code language: PHP [php]
6 không tồn tại trong chuỗi

0

4

Chủ Đề