说我有一句话"The cat ate the mouse."
我想用size = 2
分割句子。
结果数组变为:
["the cat", "cat ate", "ate the", "the mouse"]
如果我的身高是3,那么它应该成为:
["the cat ate", "cat ate the", "ate the mouse"]
我现在的方法是使用大量的for循环,我不确定是否有最好的方法。
答案 0 :(得分:3)
使用列表切片,您可以获得子列表。
>>> words = "The cat ate the mouse.".rstrip('.').split()
>>> words[0:3]
['The', 'cat', 'ate']
使用str.join
将列表转换为由分隔符连接的字符串:
>>> ' '.join(words[0:3])
'The cat ate'
List comprehension提供了一种创建单词列表的考虑方法:
>>> n = 2
>>> [' '.join(words[i:i+n]) for i in range(len(words) - n + 1)]
['The cat', 'cat ate', 'ate the', 'the mouse']
>>> n = 3
>>> [' '.join(words[i:i+n]) for i in range(len(words) - n + 1)]
['The cat ate', 'cat ate the', 'ate the mouse']
# [' '.join(words[0:3]), ' '.join(words[1:4]),...]
答案 1 :(得分:0)
您可以使用nltk库完成所有工作
import nltk
from nltk.util import ngrams
text = "The cat ate the mouse."
tokenize = nltk.word_tokenize(text)
bigrams = ngrams(tokenize,3)
for gram in bigrams:
print gram
是什么给了我们:
(''','猫','吃了')
('猫','吃',''')
('吃','','鼠标')
(''','鼠标','。')