用 Python 按单词数分割字符串

2 投票
6 回答
7774 浏览
提问于 2025-04-16 05:01

我想知道怎么把一个字符串分成几个部分,每部分包含一定数量的单词。在Python中,比如说把一个有10,000个单词的字符串分成十个每个包含1,000个单词的字符串。谢谢。

6 个回答

2

试试这个:

s = 'a b c d e f g h i j k l'
n = 3

def group_words(s, n):
    words = s.split()
    for i in xrange(0, len(words), n):
        yield ' '.join(words[i:i+n])

list(group_words(s,n))
['a b c', 'd e f', 'g h i', 'j k l']
3

在正常情况下:

>>> a = "dedff fefef fefwff efef"
>>> a.split()
['dedff', 'fefef', 'fefwff', 'efef']
>>> k = a.split()
>>> [" ".join(k[0:2]), " ".join(k[2:4])]
['dedff fefef', 'fefwff efef']
>>> 
6
def splitter(n, s):
    pieces = s.split()
    return (" ".join(pieces[i:i+n]) for i in range(0, len(pieces), n))

for piece in splitter(1000, really_long_string):
    print(piece)

这里的 n 是单词的数量;s 是一个很长的字符串。
这样做会从一个一万字的字符串中生成十个一千字的字符串,正如你所要求的那样。
需要注意的是,你也可以使用 iterools 的 grouper 方法,但那样会为你的字符串制作一千个迭代器的副本:我觉得这样会很耗费资源。

另外要注意,这个方法会把 所有 的空白字符都替换成空格。如果这样不合适,你就需要尝试其他方法。

撰写回答