Hướng dẫn how do you find multiple substrings in python? - làm thế nào để bạn tìm thấy nhiều chuỗi con trong python?

Nếu bạn muốn kết hợp chính xác của các từ thì hãy xem xét từ mã thông báo từ chuỗi đích. Tôi sử dụng Word_Tokenize được đề xuất từ ​​NLTK:

from nltk.tokenize import word_tokenize

Đây là chuỗi mã thông báo từ câu trả lời được chấp nhận:

a_string = "A string is more than its parts!"
tokens = word_tokenize[a_string]
tokens
Out[46]: ['A', 'string', 'is', 'more', 'than', 'its', 'parts', '!']

Câu trả lời được chấp nhận được sửa đổi như sau:

matches_1 = ["more", "wholesome", "milk"]
[x in tokens for x in matches_1]
Out[42]: [True, False, False]

Như trong câu trả lời được chấp nhận, từ "nhiều hơn" vẫn còn khớp. Tuy nhiên, nếu "MO" trở thành một chuỗi khớp, câu trả lời được chấp nhận vẫn tìm thấy một trận đấu. Đó là một hành vi mà tôi không muốn.

matches_2 = ["mo", "wholesome", "milk"]
[x in a_string for x in matches_1]
Out[43]: [True, False, False]

Sử dụng mã thông báo Word, "Mo" không còn khớp nữa:

[x in tokens for x in matches_2]
Out[44]: [False, False, False]

Đó là hành vi bổ sung mà tôi muốn. Câu trả lời này cũng trả lời câu hỏi trùng lặp ở đây.

Tóm tắt: Trong hướng dẫn này, chúng tôi sẽ tìm hiểu các cách khác nhau để kiểm tra nhiều chuỗi con trong một chuỗi khác trong Python. Trả về true nếu chuỗi chứa bất kỳ chuỗi con đã cho.: In this tutorial, we will learn different ways to check for multiple substrings in another string in Python. Return True if the string contains any of the given substrings.

Phương pháp 1: Sử dụng bất kỳ [] với vòng lặp để kiểm tra các nền tảng

Trong phương pháp này, chúng tôi lặp lại thông qua danh sách các chuỗi con và kiểm tra bằng toán tử in nếu nó tồn tại trong một chuỗi khác.

Chúng tôi nối các kết quả boolean vào danh sách và chuyển nó cho chức năng any[] để trả về đúng hay sai cho biết liệu có bất kỳ chuỗi con nào có trong chuỗi hay không.

Hàm any[] trong Python chấp nhận một điều đáng tin cậy [như danh sách, từ điển, tuple, v.v.] như một tham số và trả về đúng nếu bất kỳ phần tử nào trong ITBELBER là

a_string = "A string is more than its parts!"
tokens = word_tokenize[a_string]
tokens
Out[46]: ['A', 'string', 'is', 'more', 'than', 'its', 'parts', '!']
1.

substrings = ['python', 'python3', 'programming']
string = 'Learn programming at pencilprogrammer.com'

result_list = []
for x in substrings:
    # append True/False for substring x
    result_list.append[x in string]
 
#call any[] with boolean results list
print[any[result_list]]

Đầu ra: Đúng True

Một nhược điểm của phương pháp này là nó nhạy cảm trường hợp. Nếu một chuỗi con có trong chuỗi chính, nhưng trường hợp không khớp, nó sẽ trả về kết quả sai.

Chúng ta có thể vượt qua điều này bằng cách thay đổi các chuỗi thành cùng một trường hợp [ví dụ thấp hơn], bên trong thân vòng lặp:

substrings = ['mY', 'naME', 'is', 'KuMAR']
string = 'Author name: Adarsh Kumar'

result_list = []
for x in substrings:
    # append True/False for substring x
    result_list.append[x.lower[] in string.lower[]]
 
#call any[] with boolean results list
print[any[result_list]]

Ngoài ra, chúng tôi có thể kiểm tra chất nền bằng cách sử dụng biểu thức thông thường như được thảo luận dưới đây.

Phương pháp 2: Sử dụng bất kỳ [] với biểu thức thông thường [Re]

Sử dụng các biểu thức chính quy, chúng ta có thể dễ dàng kiểm tra nhiều chuỗi con trong một câu lệnh đơn.

Chúng tôi sử dụng phương pháp

a_string = "A string is more than its parts!"
tokens = word_tokenize[a_string]
tokens
Out[46]: ['A', 'string', 'is', 'more', 'than', 'its', 'parts', '!']
2 của mô -đun
a_string = "A string is more than its parts!"
tokens = word_tokenize[a_string]
tokens
Out[46]: ['A', 'string', 'is', 'more', 'than', 'its', 'parts', '!']
3 để lấy tất cả các trận đấu làm danh sách các chuỗi và chuyển nó sang phương thức any[] để có được kết quả đúng hoặc sai.

import re

string = 'Python is good for Machine Learning and Data-Science'

"""
pass substrings separated by | as 1st argument
and main string value as 2nd argument.
Additionally, we can pass re.IGNORECASE paramter as
3rd argument to make matching case-insensitive.
"""
match_list = re.findall[r'python|machine|good', string, re.IGNORECASE]

print[any[match_list]]

Đầu ra: Đúng True

Một nhược điểm của phương pháp này là nó nhạy cảm trường hợp. Nếu một chuỗi con có trong chuỗi chính, nhưng trường hợp không khớp, nó sẽ trả về kết quả sai.

Chúng ta có thể vượt qua điều này bằng cách thay đổi các chuỗi thành cùng một trường hợp [ví dụ thấp hơn], bên trong thân vòng lặp:
LinkedIn

Python bất kỳ [] hàm

Python bất kỳ [] chức năng chấp nhận có thể lặp lại [danh sách, tuple, từ điển, v.v.] như một đối số và trả về đúng nếu bất kỳ phần tử nào trong ITable là đúng, nếu không nó sẽ trả về sai. Nếu đối tượng có thể xóa, hàm bất kỳ [] sẽ trả về sai.any[] function accepts iterable [list, tuple, dictionary etc.] as an argument and return true if any of the element in iterable is true , else it returns false . If the iterable object is empty, the any[] function will return False.

bất kỳ vs tất cả

  1. Bất kỳ sẽ trả về đúng khi ít nhất một trong các yếu tố là sự thật. will return True when at least one of the elements is Truthy.
  2. Tất cả sẽ trở lại chỉ đúng khi tất cả các yếu tố là sự thật. will return True only when all the elements are Truthy.

Kiểm tra xem nhiều chuỗi có tồn tại trong một chuỗi khác không

Trong trường hợp này, chúng ta có thể sử dụng python "bất kỳ []"."any[]" .

Ở đây, tập lệnh trả về "tìm thấy một trận đấu", bởi vì ít nhất một từ tồn tại trong danh sách.

Ví dụ 2:

đầu ra

Cách kiểm tra xem chuỗi có chứa chất nền từ danh sách không

Nếu danh sách của bạn quá dài, tốt hơn là sử dụng biểu thức thông thường của Python.Regular Expression .

Ví dụ trên trả về "Tìm thấy một trận đấu" vì "một" tồn tại trong danh sách.

Kiểm tra xem một chuỗi có chứa nhiều từ khóa không

Bạn cũng có thể tìm thấy một giải pháp cho việc này bằng cách sử dụng lặp lại.iteration .

Tập lệnh trên "Tìm thấy một trận đấu" bởi vì "một" tồn tại trong danh sách Myl.

Tất cả các trận đấu bao gồm các bản sao trong một chuỗi

Nếu bạn muốn nhận tất cả các trận đấu bao gồm các bản sao từ danh sách:

Từ đầu tiên phù hợp trong một chuỗi từ danh sách

Nếu bạn muốn trận đấu đầu tiên với FALSE là mặc định:

Ví dụ trên trả về "một" bởi vì từ "một" là từ bắt đầu và cũng tồn tại trong danh sách myl.

Làm thế nào để trích xuất các từ đầu tiên và cuối cùng từ một chuỗi?

Tương tự để kiểm tra xem tất cả các chuỗi trong danh sách có được tìm thấy không, hãy sử dụng "tất cả" thay vì "bất kỳ" nào."all" instead of "any" .

Ví dụ trên trả về sai vì "sáu" không có trong chuỗi.



Bài Viết Liên Quan

Chủ Đề