Hướng dẫn how do you check if an item in a list is in a string python? - làm cách nào để kiểm tra xem một mục trong danh sách có nằm trong chuỗi trăn không?

360

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một cái gì đó như thế này:

extensionsToCheck = ['.pdf', '.doc', '.xls']

for extension in extensionsToCheck:
    if extension in url_string:
        print(url_string)

Tôi đang tự hỏi điều gì sẽ là cách thanh lịch hơn để làm điều này trong Python (mà không sử dụng vòng lặp for)? Tôi đã nghĩ về một cái gì đó như thế này (như từ C/C ++), nhưng nó không hoạt động:

if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)

EDIT: Tôi hơi buộc phải giải thích điều này khác với câu hỏi dưới đây được đánh dấu là trùng lặp tiềm năng (vì vậy tôi không bị đóng cửa).

Sự khác biệt là, tôi muốn kiểm tra xem một chuỗi là một phần của một số danh sách các chuỗi trong khi câu hỏi khác là kiểm tra xem một chuỗi từ danh sách các chuỗi có phải là phần phụ của chuỗi khác hay không. Tương tự, nhưng không hoàn toàn giống nhau và vấn đề ngữ nghĩa khi bạn đang tìm kiếm một câu trả lời trực tuyến IMHO. Hai câu hỏi này thực sự đang tìm cách giải quyết vấn đề ngược lại của nhau. Giải pháp cho cả hai hóa ra là giống nhau mặc dù.

Đã hỏi ngày 30 tháng 6 năm 2011 lúc 7:41Jun 30, 2011 at 7:41

Hướng dẫn how do you check if an item in a list is in a string python? - làm cách nào để kiểm tra xem một mục trong danh sách có nằm trong chuỗi trăn không?

Tkittkittkit

7.4716 Huy hiệu vàng40 Huy hiệu bạc67 Huy hiệu đồng6 gold badges40 silver badges67 bronze badges

2

Sử dụng trình tạo cùng với

if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)
0, điều trị ngắn gọn trong lần thực sự đầu tiên:

if any(ext in url_string for ext in extensionsToCheck):
    print(url_string)

Chỉnh sửa: Tôi thấy câu trả lời này đã được OP chấp nhận. Mặc dù giải pháp của tôi có thể là giải pháp "đủ tốt" cho vấn đề cụ thể của anh ấy và là một cách chung chung để kiểm tra xem có bất kỳ chuỗi nào trong danh sách được tìm thấy trong một chuỗi khác, hãy nhớ rằng đây là tất cả những gì giải pháp này. Nó không quan tâm đến nơi chuỗi được tìm thấy, ví dụ: Trong phần kết thúc của chuỗi. Nếu điều này là quan trọng, như thường thấy với các URL, bạn nên tìm đến câu trả lời của @Wladimir Palant hoặc bạn có nguy cơ bị dương tính sai. I see this answer has been accepted by OP. Though my solution may be "good enough" solution to his particular problem, and is a good general way to check if any strings in a list are found in another string, keep in mind that this is all that this solution does. It does not care WHERE the string is found e.g. in the ending of the string. If this is important, as is often the case with urls, you should look to the answer of @Wladimir Palant, or you risk getting false positives.

Nam G Vu

31.7K67 Huy hiệu vàng222 Huy hiệu bạc357 Huy hiệu đồng67 gold badges222 silver badges357 bronze badges

Đã trả lời ngày 30 tháng 6 năm 2011 lúc 8:00Jun 30, 2011 at 8:00

8

extensionsToCheck = ('.pdf', '.doc', '.xls')

'test.doc'.endswith(extensionsToCheck)   # returns True

'test.jpg'.endswith(extensionsToCheck)   # returns False

Đã trả lời ngày 30 tháng 6 năm 2011 lúc 7:57Jun 30, 2011 at 7:57

Eumiroeumiroeumiro

199K34 Huy hiệu vàng294 Huy hiệu bạc259 Huy hiệu Đồng34 gold badges294 silver badges259 bronze badges

5

Tốt hơn là phân tích URL đúng cách - theo cách này bạn có thể xử lý

if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)
1 và
if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)
2 một cách chính xác.

from urlparse import urlparse
import os
path = urlparse(url_string).path
ext = os.path.splitext(path)[1]
if ext in extensionsToCheck:
  print(url_string)

Đã trả lời ngày 30 tháng 6 năm 2011 lúc 7:57Jun 30, 2011 at 7:57

EumiroeumiroWladimir Palant

199K34 Huy hiệu vàng294 Huy hiệu bạc259 Huy hiệu Đồng12 gold badges97 silver badges124 bronze badges

Tốt hơn là phân tích URL đúng cách - theo cách này bạn có thể xử lý

if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)
1 và
if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)
2 một cách chính xác.

extensionsToCheck = ['.pdf', '.doc', '.xls']
url_string = 'file.doc'
res = [ele for ele in extensionsToCheck if(ele in url_string)]
print(bool(res))
> True

Wladimir Palantwladimir PalantApr 13, 2021 at 7:54

56K12 Huy hiệu vàng97 Huy hiệu bạc124 Huy hiệu đồngAidos

Chỉ trong trường hợp nếu có ai phải đối mặt với nhiệm vụ này một lần nữa, đây là một giải pháp khác:7 silver badges19 bronze badges

Đã trả lời ngày 13 tháng 4 năm 2021 lúc 7:54

print [url_string for extension in extensionsToCheck if(extension in url_string)]

Aidosaidos

7197 Huy hiệu bạc19 Huy hiệu đồngApr 25, 2016 at 17:15

Sử dụng danh sách toàn diện nếu bạn muốn một giải pháp dòng duy nhất. Mã sau trả về một danh sách chứa url_string khi nó có các tiện ích mở rộng .doc, .pdf và .xls hoặc trả về danh sách trống khi nó không chứa tiện ích mở rộng.psun

Lưu ý: Điều này chỉ để kiểm tra xem nó có chứa hay không và không hữu ích khi người ta muốn trích xuất từ ​​chính xác khớp với các tiện ích mở rộng.9 silver badges13 bronze badges

2

Đã trả lời ngày 25 tháng 4 năm 2016 lúc 17:15

'(\.pdf$|\.doc$|\.xls$)'

psunpsun

5759 Huy hiệu bạc13 Huy hiệu ĐồngJun 30, 2011 at 7:46

3

Kiểm tra xem nó có khớp với regex này không:

Lưu ý: Nếu bạn mở rộng không ở cuối URL, hãy xóa các ký tự

if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)
3, nhưng nó làm suy yếu nó một chút

extensionsToCheck = ['.pdf', '.doc', '.xls']
url_string = 'http://.../foo.doc'

print([extension for extension in extensionsToCheck if(extension in url_string)])

['.doc']`

Đã trả lời ngày 30 tháng 6 năm 2011 lúc 7:46

Đây là một biến thể của câu trả lời hiểu danh sách được đưa ra bởi @psun.

if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)
5

Bằng cách chuyển đổi giá trị đầu ra, bạn thực sự có thể trích xuất mẫu phù hợp từ danh sách hiểu (một cái gì đó không thể có với cách tiếp cận

if ('.pdf' or '.doc' or '.xls') in url_string:
    print(url_string)
4 của @Lauritz-V-Thaulow)Nov 8, 2016 at 18:02

Hơn nữa, bạn có thể chèn một biểu thức thông thường nếu bạn muốn thu thập thêm thông tin sau khi đã biết mẫu phù hợp (điều này có thể hữu ích khi danh sách các mẫu được phép quá dài để ghi vào một mẫu Regex duy nhất)Dannid

print([re.search(r'(\w+)'+extension, url_string).group(0) for extension in extensionsToCheck if(extension in url_string)])
17 silver badges17 bronze badges

2

Làm thế nào để bạn kiểm tra xem các phần tử trong danh sách có trong một chuỗi không?

Sử dụng bất kỳ () để kiểm tra xem chuỗi có chứa phần tử từ danh sách không.Sử dụng bất kỳ chức năng nào là cách cổ điển nhất mà bạn có thể thực hiện nhiệm vụ này và cũng hiệu quả.Hàm này kiểm tra đối sánh trong chuỗi với khớp của từng phần tử của danh sách. to check if string contains element from list. Using any function is the most classical way in which you can perform this task and also efficiently. This function checks for match in string with match of each element of list.

Làm thế nào để bạn kiểm tra xem một mục có trong danh sách Python không?

Chúng ta có thể sử dụng phương thức danh sách Python được xây dựng, Count (), để kiểm tra xem phần tử được truyền có tồn tại trong danh sách không.Nếu phần tử được truyền tồn tại trong danh sách, phương thức đếm () sẽ hiển thị số lần nó xảy ra trong toàn bộ danh sách.Nếu đó là một số dương khác không, nó có nghĩa là một yếu tố tồn tại trong danh sách.use the in-built python List method, count(), to check if the passed element exists in the List. If the passed element exists in the List, the count() method will show the number of times it occurs in the entire list. If it is a non-zero positive number, it means an element exists in the List.

Làm cách nào để kiểm tra xem danh sách chuỗi có chứa chuỗi không?

Sử dụng phương thức String.Contains () cho mỗi chuỗi con.Bạn có thể chấm dứt vòng lặp trong trận đấu đầu tiên của chuỗi con hoặc tạo chức năng tiện ích trả về true nếu chuỗi được chỉ định chứa bất kỳ chuỗi con nào từ danh sách được chỉ định. contains() method for each substring. You can terminate the loop on the first match of the substring, or create a utility function that returns true if the specified string contains any of the substrings from the specified list.