我正在用 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))
我想了解这种情况下的 lambda 函数,非常感谢。
您正在创建一个 lambda(匿名)函数,它将
s
作为参数,然后检查字符串“Price”是否在 s
中,或者您可以判断 s
是否包含字符串“Price”。它将基于此返回 True
或 False
。
此外,您将该函数存储在
string
变量中。因此,您可以通过该变量调用该 lambda 函数: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