获取包含 3 个单词的短语

Get phrases with 3 words

我已经尝试解决这个问题一段时间了。

我想取一个大 text/string 并将其拆分为 3 个词的短语,然后将它们添加到一个数组中。

我已经尝试使用 spilt(),但它并没有像我希望的那样工作。

为了让它发挥作用,我在想什么:

从字符串中的前 3 个单词开始,当我得到它们时,我将其放入一个数组中并移动 1 个单词并取出接下来的 3 个单词,依此类推。

这样做不好吗?

亲切的问候:)

my_really_long_string = "this is a really long string"
split_string = my_really_long_string.split()
phrase_array = [" ".join(split_string[i:i+3]) for i in range(len(split_string) - 2)]

第一行只代表你的字符串。

之后,只需按空格拆分,假设您只关心定义单词的结尾。 (@andrew_reece 关于边缘案例的评论非常相关。)

下一个在 0 到 n-2 的范围内迭代,其中 n 是字符串的长度。它从 split_string 数组中取出 3 个连续的单词,然后用空格将它们连接起来。

这几乎肯定不是最快的做事方式,因为它有一个拆分和一个连接,但它非常简单。

>>> my_really_long_string = "this is a really long string"
>>> split_string = my_really_long_string.split()
>>> phrases = [" ".join(split_string[i:i+3]) for i in range(len(split_string) - 2)]
>>> 
>>> phrases
['this is a', 'is a really', 'a really long', 'really long string']
>>> 

这行得通。您可能想先去除字符文本,但不确定您的数据是什么。

x = 'alt bot cot dot eat fat got hot iot jot kot lot mot not'
x = [y for y in [x.strip().split(' ')[i:i+3] for i in range(0, len(x), 3)]]