我们说我有:
sentences = ['The girls are gorgeous', 'I'm mexican']
我想获得:
words = ['The','girls','are','gorgeous', 'I'm', 'mexican']
我试过了:
words = [w.split(' ') for w in sentences]
但没有预期的结果。
这是否适用于计数器(单词),因为我需要获得频率?
答案 0 :(得分:6)
试试这个
sentences = ["The girls are gorgeous", "I'm mexican"]
words = [word for sentence in sentences for word in sentence.split(' ')]
答案 1 :(得分:4)
您的方法无效,因为split
会返回一个列表。因此,您的代码会创建一个嵌套列表。您需要将其展平以与Counter
一起使用。你可以用很多方式压扁它。
from itertools import chain
from collections import Counter
Counter(chain.from_iterable(words))
将是展平嵌套列表并查找频率的最佳方法。但是你可以使用生成器表达式,比如这个
sentences = ['The girls are gorgeous', "I'm mexican"]
from collections import Counter
print Counter(item for items in sentences for item in items.split())
# Counter({'mexican': 1, 'girls': 1, 'are': 1, 'gorgeous': 1, "I'm": 1, 'The':1})
这将获取每个句子,将其拆分以获取单词列表,迭代这些单词并展平嵌套结构。
如果你想找到前10个单词,那么你可以使用Counter.most_common
方法,就像这样
Counter(item for items in sentences for item in items.split()).most_common(10)
答案 2 :(得分:2)
试试这个:
words = ' '.join(sentences).split()