Нужно объяснение лямбда-функции очистки веб-страниц в Python

Я занимаюсь парсингом веб-страниц на Python и нашел это:

products = soup.find_all('li')
products_list = []
for product in products:
    name = product.h2.string
    price = product.find('p', string=lambda s: 'Price' in s).string
    products_list.append((name, price))

Я хотел бы понять лямбда-функцию в этом случае, большое спасибо.

🤔 А знаете ли вы, что...
В Python есть среды разработки, такие как Jupyter Notebook, которые упрощают работу с данными и исследованиями.


56
1

Ответ:

Решено

Вы создаете лямбда-функцию (анонимную), которая принимает s в качестве аргумента, а затем проверяет, находится ли строка «Цена» в s, или вы можете сказать, содержит ли s строку «Цена». В зависимости от этого он вернет True или False.

Кроме того, вы сохраняете эту функцию внутри переменной string. Итак, вы можете вызвать эту лямбда-функцию по этой переменной: string(s).

Вот пример (если это поможет):


>>> # Create lambda function and store inside `string`
>>> string = lambda s: "Price" in s
>>> # Check `string` indeed a lambda function
>>> string
<function <lambda> at 0x7f4c0afa1630>
>>>
>>> # Call the lambda function with an argument
>>> # Inside lambda function, now, `s = "Hello, World"` !
>>> # It will check this: `"Price" in s`, it's not:
>>> string("Hello, World")
False
>>> # Now, `s = "What is the price of milk?"`
>>> # "Price" and "price" are not same !
>>> string("What is the price of milk?")
False
>>> string("Price of milk is $69.")
True

Эта лямбда-функция аналогична этой:

def string(s):
    return "Price" in s