如何修复我的代码在列表中找不到关键字的问题?
How can I fix my code not finding keywords in a list?
我有下面的代码。我需要它从 html 页面中提取产品名称,它做得很好。然后,我需要它将输入与列表中的元素匹配并输出它的索引。即使有'Liquid Tee'这样的元素,输入的是'liquid',也不匹配。
如果您知道原因,我将不胜感激!
这是代码示例:
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]
如上所述,它区分大小写。如果您希望在 Liquid Tee
中找到 liquid
,您可以使用正则表达式,或者在检查字符串中是否存在关键字时将其全部设为 caps/all 小写:
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()]
输出:
正确输出在 index/position 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]
我有下面的代码。我需要它从 html 页面中提取产品名称,它做得很好。然后,我需要它将输入与列表中的元素匹配并输出它的索引。即使有'Liquid Tee'这样的元素,输入的是'liquid',也不匹配。
如果您知道原因,我将不胜感激!
这是代码示例:
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]
如上所述,它区分大小写。如果您希望在 Liquid Tee
中找到 liquid
,您可以使用正则表达式,或者在检查字符串中是否存在关键字时将其全部设为 caps/all 小写:
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()]
输出:
正确输出在 index/position 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]