У меня есть словарь со значениями в виде списка, каждый список содержит строки.Я хочу 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
работала хорошо, я смог убрать знаки препинания в списках, но я не могуиспользуйте ту же логику, чтобы избавиться от слов, начинающихся с '@'.Кроме того, я не понимаю, почему та же логика не может быть применена.