Recherche de noms de produits et de descriptions de produits à partir d'un CSV pour filtrer les volts avec une expression rationnelle. Ce que j'essaie de faire, c'est de supprimer les valeurs en double de ma recherche. J'ai essayé set list etc. J'ai du mal à comprendre pourquoi je ne peux pas supprimer les mots en double de ma recherche. Je ne comprends pas comment set fonctionne, il semble diviser toutes les valeurs en caractères 1,2, , v,o,l,t ne peut-on pas simplement supprimer le mot en double entier dans found ? lorsque j'exécute le code j'obtiens :
12 Volt
12 Volt
40 Volt
2 Volt
18 Volt
18 Volt
240 Volt
240 Volt
110 Volt
110 Volt
110 Volt
36 Volt
Ce dont j'ai besoin et que j'ai du mal à obtenir, c'est une liste unique de valeurs, par exemple 12 volts, 40 volts, 18 volts, 240 volts, etc, etc.
def volts_search():
with open('filters/volts_filter.csv', 'w') as headerOut:
headerOut.write("name" + "," + "sort_order" + "," + "status" + "," + "image" + "," + "regex" + "," + "value" + "\n")
with open(merchant_feed, 'r') as csv_filein, open('filters/volts_filter.csv', 'a') as fileOut:
reader = csv.DictReader(csv_filein, delimiter=',', quotechar='"')
for row in reader:
program_name = clean_text(row['program_name'])
product_name = clean_text(row['product_name'])
product_description = clean_text(row['description'])
merchant_category = clean_text(row['merchant_category'])
product_id = row['product_id']
product_brand = clean_text(row['brand'])
filter_name = "Filter By Volts:"
v = re.findall(r"((?i)(?:)\d+\.\d+v|\d+\.\d+ v|\d+ v|\d+v)", product_name + product_description)
volt = re.findall(r"((?i)(?:)\d+volt|\d+ volt)", product_name + product_description)
volts = re.findall(r"((?i)(?:)\d+\.\d+volts|\d+volts)", product_name + product_description)
seen = set()
for filter_search in volt:
if filter_search in product_name + product_description:
if filter_search in seen: continue
seen.add(filter_search)
print(filter_search)