到目前为止,我已经拥有了
lst = ["Tommy", "Tommy Hilfiger", "Tommy Jeans", "Hugo", "Hugo Boss", "Boss", "HUGO", "BOSS", "Lacoste", "lacoste",
"Adidas",
"adidas", "Armani", "North", "Paul", "Smith", "Vivienne Westwood", "Levis", "Kent", "Nike", "Calvin Klein",
"Calvin",
"Pretty Green"]
title_div = soup.find_all(class_='product-name')
for container5 in title_div:
container_text = container5.text.split(' ')
for string in container_text:
if string in lst:
print(string)
这仅返回名字:例如,当我想返回“漂亮绿色”时,仅显示“ Tommy Hilfiger”或“ Pretty”中的“ Tommy”。
关于如何进行这项工作的任何建议?
****以下代码是存储在container_text中的内容
container_text =
['HUGO', 'Dolive', 'T', 'Shirt', 'Blue']
['Tommy', 'Hilfiger', 'Lounge', 'Logo', 'Flag', 'T', 'Shirt', 'White']
['BOSS', 'Multi', 'Colour', 'Triple', 'Pack', 'T', 'Shirts']
['BOSS', 'Triple', 'Pack', 'Crew', 'Neck', 'T', 'Shirts']
['EA7', 'Emporio', 'Armani', 'Crew', 'Neck', 'Logo', 'T', 'Shirt', 'Grey']
['PS', 'By', 'Paul', 'Smith', 'Regular', 'Fit', 'T', 'Shirt', 'Blue']
['The', 'North', 'Face', 'Fine', 'Alpine', '2', 'T', 'Shirt', 'Khaki']
['Vivienne', 'Westwood', 'Orb', 'Logo', 'T', 'Shirt', 'Grey']
['Levis', 'Logo', 'Crew', 'Neck', 'T', 'Shirt', 'White']
['Nike', 'Futura', 'Icon', 'T', 'Shirt', 'White']
['Calvin', 'Klein', 'Jeans', 'Tape', 'T', 'Shirt', 'White']
['Tommy', 'Hilfiger', 'Lounge', 'Logo', 'Flag', 'T', 'Shirt', 'Green']
['Tommy', 'Hilfiger', 'Logo', 'T', 'Shirt', 'Navy']
['adidas', 'Originals', '3', 'Stripe', 'T', 'Shirt', 'Blue']
['Nike', 'Futura', 'Icon', 'T', 'Shirt', 'Black']
['Tommy', 'Hilfiger', 'Flag', 'T', 'Shirt', 'Khaki']
['BOSS', 'Tblurry', '5', 'T', 'Shirt', 'Black']
['Tommy', 'Hilfiger', 'Flag', 'T', 'Shirt', 'Grey']
['Lacoste', 'Crew', 'Neck', 'T', 'Shirt', 'Blue']
['Tommy', 'Hilfiger', 'Logo', 'T', 'Shirt', 'Navy']
['Lacoste', 'Crew', 'Neck', 'T', 'Shirt', 'Blue']
['Pretty', 'Green', 'X', 'Umbro', 'Ringer', 'T', 'Shirt', 'Blue']
['Armani', 'Exchange', 'Crew', 'Neck', 'Logo', 'T', 'Shirt', 'White']
['The', 'North', 'Face', 'Logo', 'T', 'Shirt', 'Blue']
['HUGO', 'Dolive', 'Logo', 'T', 'Shirt', 'Black']
['Tommy', 'Hilfiger', 'Loungewear', 'Taped', 'T', 'Shirt', 'Navy']
['Tommy', 'Hilfiger', 'Loungewear', 'Logo', 'T', 'Shirt', 'White']
['Tommy', 'Hilfiger', 'Loungewear', 'Icon', 'T', 'Shirt', 'Navy']
['Tommy', 'Hilfiger', 'Loungewear', 'Icon', 'T', 'Shirt', 'White']
['Tommy', 'Hilfiger', 'Loungewear', 'Round', 'Neck', 'T', 'Shirt', 'Grey']
['Kent', 'And', 'Curwen', 'Rose', 'Patch', 'Icon', 'T', 'Shirt', 'Black']
['HUGO', 'Dolive', 'Crew', 'Neck', 'T', 'Shirt', 'Black']
['HUGO', 'Dolive', 'Crew', 'Neck', 'T', 'Shirt', 'White']
['HUGO', 'Dolive', 'Crew', 'Neck', 'T', 'Shirt', 'White']
['Tommy', 'Hilfiger', 'Lounge', 'Logo', 'Flag', 'T', 'Shirt', 'Navy']
['Tommy', 'Hilfiger', 'Lounge', 'Logo', 'Flag', 'T', 'Shirt', 'White']
['Tommy', 'Hilfiger', 'Lounge', 'Logo', 'Flag', 'T', 'Shirt', 'Grey']
['Calvin', 'Klein', 'Crew', 'Neck', 'Lounge', 'T', 'Shirt', 'White']
['Tommy', 'Hilfiger', 'Loungewear', '3', 'Pack', 'T', 'Shirts', 'White']
['Calvin', 'Klein', 'Logo', 'T', 'Shirt', 'Black']
['Tommy', 'Hilfiger', 'Lounge', '3', 'Pack', 'V', 'Neck', 'T', 'Shirts', 'White']
['Calvin', 'Klein', 'Short', 'Sleeved', 'T', 'Shirt', 'White']
['Tommy', 'Hilfiger', 'Lounge', '3', 'Pack', 'V', 'Neck', 'T', 'Shirts']
['Calvin', 'Klein', 'Short', 'Sleeved', 'T', 'Shirt', 'Black']
['Calvin', 'Klein', 'Crew', 'Neck', 'Logo', 'T', 'Shirt', 'Grey']
['Calvin', 'Klein', 'Lounge', 'Logo', 'T', 'Shirt', 'White']
['Tommy', 'Hilfiger', 'Core', 'Slim', 'T', 'Shirt', 'Grey']
['Tommy', 'Hilfiger', 'Core', 'Slim', 'Fit', 'T', 'Shirt', 'White']
['Tommy', 'Hilfiger', 'Core', 'Slim', 'T', 'Shirt', 'Navy']
['Tommy', 'Hilfiger', 'Core', 'Slim', 'T', 'Shirt', 'Black']
['BOSS', 'TChup', 'T', 'Shirt', 'Navy']
['BOSS', 'Tales', 'Logo', 'T', 'Shirt', 'Black']
['Calvin', 'Klein', 'Jeans', 'Institutional', 'T', 'Shirt', 'White']
['Calvin', 'Klein', 'Jeans', 'Institutional', 'T', 'Shirt', 'Black']
['BOSS', 'Tales', 'T', 'Shirt', 'White']
通常总共有65行
答案 0 :(得分:0)
好像您正在解析HTML一样,我认为您应该像这样检查子集:
lst = ["Tommy", "Tommy Hilfiger", "Tommy Jeans", "Hugo", "Hugo Boss", "Boss", "HUGO", "BOSS", "Lacoste", "lacoste",
"Adidas",
"adidas", "Armani", "North", "Paul", "Smith", "Vivienne Westwood", "Levis", "Kent", "Nike", "Calvin Klein",
"Calvin",
"Pretty Green"]
mystring = "Tommy"
for x in lst:
if set(mystring).issubset(x):
print(x,mystring)
#Tommy Tommy
#Tommy Hilfiger Tommy
#Tommy Jeans Tommy
答案 1 :(得分:0)
与其查看container.text对象中的单词是否在品牌列表中,不如查看您的文本中是否有任何品牌。
brand_names = ["Tommy", "Tommy Hilfiger", "Tommy Jeans", "Hugo", "Hugo Boss", "Boss", "HUGO", "BOSS", "Lacoste", "lacoste",
"Adidas",
"adidas", "Armani", "North", "Paul", "Smith", "Vivienne Westwood", "Levis", "Kent", "Nike", "Calvin Klein",
"Calvin",
"Pretty Green"]
title_div = soup.find_all(class_='product-name')
for container5 in title_div:
for brand in brand_names:
if brand in container5.text:
print(brand)
作为旁注,请尝试为变量使用更多有用的名称。例如,我将lst
替换为brand_names
,因为这样可以更清楚地知道发生了什么。
将需要用户交互的方法与实际执行逻辑的代码分开始终是一个很好的原则。这样可以更轻松地在其他情况下重用代码或更改仅与输出有关的某些事情。
在这种情况下,它可能看起来像:
def find_brands(title_div, brands):
for container5 in title_div:
for brand in brand_names:
if brand in container5.text:
yield brand # Generator
def print_matches(matches):
if len(matches)==0:
print('Other')
for match in matches:
print(match)
def main():
# Add code for creating soup in front of this.
title_div = soup.find_all(class_='product-name')
matched_brands=list(find_brands(title_div, brand_names))
print_matches(matched_brands)
请注意,我在此处使用了generator。现在,您只需要考虑返回一次列表即可。
然后您可以调用main方法。