我下面有代码。我需要它来从html页面中提取产品名称,这很好。然后,我需要它来将输入与列表中的元素进行匹配,并输出其索引。即使存在诸如“液体三通”之类的元素并且输入为“液体”,也与它们不匹配。
如果您知道为什么,我将不胜感激!
这是代码示例:
import urllib3
from bs4 import beautifulsoup
from lxml import etree
url = https://www.example.com
response = http.request('GET', url)
soup = BeautifulSoup(response.data)
keyword = input()
data = etree.HTML(str(soup))
all_names = data.xpath('//a[@class="name-link"]/text()')
namenumbered = [i for i, s in enumerate(all_names) if keyword in s]
答案 0 :(得分:1)
像上面所述,它区分大小写。如果希望在liquid
中找到Liquid Tee
,则可以使用正则表达式,或者在检查关键字是否存在于字符串中时将其全部大写/全部小写:
all_names = ['liquid!', 'Liquid Tee', 'LIQUID', 'liguid ', 'hello', 'The water is LiQuId.']
keyword = 'liquid'
namenumbered = [i for i, s in enumerate(all_names) if keyword.lower() in s.lower()]
输出:
正确输出在位置0、1、2和5处找到的液体
print (namenumbered)
[0, 1, 2, 5]
但不降低到更低,只会识别位置[0]。
all_names = ['liquid!', 'Liquid Tee', 'LIQUID', 'liguid ', 'hello', 'The water is LiQuId.']
keyword = 'liquid'
namenumbered = [i for i, s in enumerate(all_names) if keyword in s]
输出:
print (namenumbered)
[0]