#python #list #text-mining
#python #Список #интеллектуальный анализ текста
Вопрос:
У меня есть список списков, касающихся твитов, и мне нужно удалить имя пользователя.
[['@Hegelbon','That','heart','sliding','into','the','waste','basket','.',':('],['“','@ketchBurning',':','I','hate','Japanese','call','him','"','bani','"',
':(',':(','”','Me','too'], ... ]
Основная проблема в том, что я не знаю, как работать со списком списков. Я пробовал следующий код среди прочего, но не сработал:
import re
for element in tweets:
for word in element:
re.sub('@[^s] ','', tweets)
Пожалуйста, помогите.
Комментарии:
1. Перестройте список с пониманием списка.
tweets = [['@Hegelbon','That','heart','sliding','into','the','waste','basket','.',':('], ['“','@ketchBurning',':','I','hate','Japanese','call','him','"','bani','"', ':(',':(','”','Me','too']]; filtered = [item for item in tweets if item[0] != '@Hegelbon']
Ответ №1:
Вы можете использовать понимание вложенного списка для фильтрации строк, начинающихся с @
(при условии, что ваш список списков хранится как переменная l
):
[[i for i in s if not i.startswith('@')] for s in l]
Это возвращает:
[['That', 'heart', 'sliding', 'into', 'the', 'waste', 'basket', '.', ':('], ['“', ':', 'I', 'hate', 'Japanese', 'call', 'him', '"', 'bani', '"', ':(', ':(', '”', 'Me', 'too']]
Комментарии:
1. Большое спасибо за вашу помощь!
Ответ №2:
Используйте итерации списка:
mylist = [['@Hegelbon','That','heart','sliding','into','the','waste','basket','.',':('],['“','@ketchBurning',':','I','hate','Japanese','call','him','"','bani','"',
':(',':(','”','Me','too'] ]
newlist = [ [item for item in sublist if not item.startswith('@')] for sublist in mylist]