如何在python中将字符串拆分为多个单词的几个部分。例如,将10,000字的字符串转换为10个1,000字的字符串。感谢。
答案 0 :(得分:4)
这可能有效
def splitter(n, s):
pieces = s.split()
return (" ".join(pieces[i:i+n]) for i in xrange(0, len(pieces), n)
for piece in splitter(1000, really_long_string):
print piece
这将从你问的10000字符串中产生10个1000字的字符串。请注意,您也可以使用iterools石斑鱼配方,但这将涉及为您的字符串制作1000个迭代器副本:我认为这是昂贵的。
另请注意,这将使用空格替换所有空格。如果这是不可接受的,你还需要别的东西。
答案 1 :(得分:2)
正常情况下:
>>> 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']
>>>
答案 2 :(得分:1)
试试这个:
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 :(得分:0)
Pehaps是这样的,
>>> s = "aa bb cc dd ee ff gg hh ii jj kk ll mm nn oo pp qq rr ss tt uu vv"
>>> chunks = s.split()
>>> per_line = 5
>>> for i in range(0, len(chunks), per_line):
... print " ".join(chunks[i:i + per_line])
...
aa bb cc dd ee
ff gg hh ii jj
kk ll mm nn oo
pp qq rr ss tt
uu vv
答案 4 :(得分:0)
这可能会有所帮助:
s="blah blah .................."
l =[]
for i in xrange(0,len(s),1000):
l.append(s[i:i+1000])
答案 5 :(得分:0)
如果您习惯使用正则表达式,也可以尝试:
import re
def split_by_number_of_words(input, number_of_words):
regexp = re.compile(r'((?:\w+\W+){0,%d}\w+)' % (number_of_words - 1))
return regexp.findall(input)
s = ' '.join(str(n) for n in range(1, 101)) # "1 2 3 ... 100"
for words in split_by_number_of_words(s, 10):
print words