Нужна помощь в объединении элементов словаря и удалении новых строк, нескольких пробелов и специальных символов - PullRequest
0 голосов
/ 28 мая 2020

Словарь с двумя URL-адресами и их текстом: нужно избавиться от множества пробелов, специальных символов и новых строк

{'https://firsturl.com': ['\ n \ n ',' \ n ',' \ n \ n \ n ',' \ n \ n ',' \ n \ n ',' \ n \ n ',' \ n ',' \ n ',' \ n ',' \ n ',' На главную | Sam ModelIn c ',' \ n \ n \ n \ n ',' \ n \ n \ n \ n ',' \ n \ n ',' \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n ',' \ n ',' \ n ',' \ n ',' \ n ',' \ n ',' \ n ',' Перейти к основному содержанию '] , 'https://secondurl.com#main -содержание ': ['\ n \ n', '\ n', '\ n \ n \ n', '\ n \ n', '\ n \ n' , '\ n \ n', '\ n', '\ n', '\ n', '\ n', 'Главная | Собираюсь начать в c ',' \ n \ n \ n \ n ',' \ n \ n \ n \ n ',' \ n \ n ',' \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n ',' \ n ',' \ n ',' \ n ',' \ n ',' \ n ',' \ n ',' Перейти к основному содержанию ',' \ n ',' \ n \ n ',' \ n \ n ',' \ n \ n ',' \ n \ n \ n \ n \ n ',' \ n \ n ',' \ n ',' \ n \ n \ n ',' \ n ',' \ n \ n \ n ',' \ n ',' Бренды ',' \ n ',' О нас ',' \ n ', 'Syndication', '\ n', 'Direct Response']}

Ожидаемый результат: {'https://firsturl.com': ['home sam modelIn c перейти к основному содержанию » ], https://secondurl.com#main -content ': [' начало страницы через c перейти к основным брендам контента о нас прямой ответ о синдикации]}

Помощь будет очень признательна

1 Ответ

0 голосов
/ 28 мая 2020

Так что давайте попробуем пройти через это, вместо того, чтобы просто бросать вам код.

Первый элемент, от которого мы хотим избавиться, - это новая строка. Итак, мы могли бы начать с чего-то вроде:

ex_dict = {"a": ["\n\n", "\n"]}

for x in ex_dict:
    new_list = [e for e in ex_dict[x] if "\n" not in e]
    ex_dict[x] = new_list

Если вы запустите это, вы увидите, что теперь мы отфильтровываем все новые строки.

Теперь у нас есть следующие случаи:

Home | Sam ModelInc
Skip to main content
Home | Going to start inc
Brands
About Us
Syndication
Direct Response

Согласно ожидаемому результату, вы хотите вывести все слова в нижний регистр и удалить не алфавитные символы.

Провел небольшое исследование , как это сделать.

В коде это выглядит так:

import re

regex = re.compile('[^a-zA-Z ]') # had to tweak the linked solution to include spaces

ex_dict = {"a": ["\n\n", "\n"]}

for x in ex_dict:
    new_list = [e for e in ex_dict[x] if "\n" not in e]

    """
    >>> regex.sub("", "Home | Sam ModelInc")
    'Home  Sam ModelInc'
    """
    new_list = [regex.sub("", e) for e in new_list]
    ex_dict[x] = new_list

, так что теперь наш последний new_list выглядит примерно так: ['Home Sam ModelInc', 'Skip to main content']

Далее мы хотим все строчные буквы.

import re

regex = re.compile('[^a-zA-Z ]') # had to tweak the linked solution to include spaces

ex_dict = {"a": ["\n\n", "\n"]}

for x in ex_dict:
    new_list = [e for e in ex_dict[x] if "\n" not in e]

    """
    >>> regex.sub("", "Home | Sam ModelInc")
    'Home  Sam ModelInc'
    """
    new_list = [regex.sub("", e) for e in new_list]

    new_list = [e.lower() for e in new_list]
    ex_dict[x] = new_list

и, наконец, мы хотим объединить все с одним пробелом между каждым словом.

import re

regex = re.compile('[^a-zA-Z ]') # had to tweak the linked solution to include spaces

ex_dict = {"a": ["\n\n", "\n"]}

for x in ex_dict:
    new_list = [e for e in ex_dict[x] if "\n" not in e]

    """
    >>> regex.sub("", "Home | Sam ModelInc")
    'Home  Sam ModelInc'
    """
    new_list = [regex.sub("", e) for e in new_list]

    new_list = [e.lower() for e in new_list]

    new_list = [" ".join((" ".join(new_list)).split())]
    ex_dict[x] = new_list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...