RegEx для сопоставления повторяющихся строк - PullRequest
2 голосов
/ 25 апреля 2019

Поиск названий продуктов и описание продукта в CSV для фильтра вольт с помощью регулярных выражений, что я пытаюсь сделать, это удалить повторяющиеся значения из моего поиска.Я пытался установить список и т.д. Я пытаюсь понять, почему я не могу удалить повторяющиеся слова из моего поиска.не понимая, как работает множество, кажется, что все значения разбиты на характеры 1,2,, v, o, l, t, можно ли не просто удалить все повторяющиеся слова в найденном?когда я запускаю код, я получаю:

12 Volt
12 Volt
40 Volt
2 Volt
18 Volt
18 Volt
240 Volt
240 Volt
110 Volt
110 Volt
110 Volt
36 Volt

Что мне нужно, и я изо всех сил пытаюсь добиться, это уникальный список значений IE 12 Вольт, 40 Вольт, 18 Вольт, 240 Вольт и т. д. и т. д.

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)

1 Ответ

0 голосов
/ 04 мая 2019

RegEx

Это выражение может помочь вам удалить повторяющиеся входные данные в файле CSV, используя строку замены:

([\s\S]+)\1{1,} 

enter image description here

График

Этот график показывает, как это будет работать при обратных ссылках:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...