Как удалить определенные слова в словаре - PullRequest
0 голосов
/ 21 октября 2018

У меня есть словарь со значениями в виде списка, каждый список содержит строки.Я хочу 1) удалить знаки препинания, исключая @ и 2) удалить элементы в списке с помощью '@'.Тем не менее, я не могу получить вторую часть:

>>> dat = {'2008':['what!','@cool','#fog','@dddong'],'2010':['hey','@cute']}
>>> 
>>> def remove_rounds(data):
...     import json
...     import string
...     ndata = {}
...     punct = string.punctuation
...     rpunct = punct.replace('@',"") # withold @
...     for k,v in data.items():
...         alist = []
...         ndata[k] = []
...         for word in data[k]:
...             alist.append(word.strip(rpunct))
...             ndata[k] = alist
...     sdata = {}
...     for k,v in ndata.items():
...         sdata[k] = []
...         blist = []
...         for word in ndata[k]:
...             if word.startswith('@'):
...                 blist = ndata[k].remove(word) # returns the list
...                 sdata[k] = blist
...     return sdata
... 
>>> remove_rounds(dat)
{'2008': None, '2010': None}

Итак, часть ndata работала хорошо, я смог убрать знаки препинания в списках, но я не могуиспользуйте ту же логику, чтобы избавиться от слов, начинающихся с '@'.Кроме того, я не понимаю, почему та же логика не может быть применена.

1 Ответ

0 голосов
/ 21 октября 2018

Просто не добавляйте слово, если оно начинается с @:

dat = {'2008':['what!','@cool','#fog','@dddong'],'2010':['hey','@cute']}

def remove_rounds(data):
    import string
    ndata = {}
    punct = string.punctuation
    rpunct = punct.replace('@',"") # withold @
    for k,v in data.items():
        alist = []
        ndata[k] = []
        for word in data[k]:
            if word.startswith("@"):
                continue # ignore this word and continue with the next one
            alist.append(word.strip(rpunct))
            ndata[k] = alist

    return ndata

print(remove_rounds(dat))

Результат:

{'2008': ['what', 'fog'], '2010': ['hey']}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...