Разделить строку по количеству слов с помощью Python - PullRequest
0 голосов
/ 05 октября 2010

Как мне разбить строку на несколько частей из нескольких слов в Python. Например, превратить строку из 10000 слов в десять строк из 1000 слов. Спасибо.

Ответы [ 6 ]

4 голосов
/ 05 октября 2010

это может сработать

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

Это даст десять строк из 1000 слов из строки 10000 слов, как вы просите.Обратите внимание, что вы также можете использовать рецепт iterools grouper, но для этого потребуется 1000 копий итератора для вашей строки: я думаю, это дорого.

Также обратите внимание, что это заменит пробелы в все пробелами.Если это не приемлемо, вам нужно что-то еще.

2 голосов
/ 05 октября 2010

Попробуйте это:

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']
2 голосов
/ 05 октября 2010

При нормальных обстоятельствах:

>>> 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']
>>> 
0 голосов
/ 05 октября 2010

Если вам удобно использовать регулярные выражения, вы также можете попробовать это:

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
0 голосов
/ 05 октября 2010

это может помочь:

s="blah blah .................."
l =[]
for i in xrange(0,len(s),1000):
    l.append(s[i:i+1000])
0 голосов
/ 05 октября 2010

Возможно что-то вроде этого,

>>> 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...