2
import re
line = "the heart was made to be broken"
line_split2 = re.split(r'[ \t\n\r, ]+',line)

def chunks(line_split2, n):
    for i in xrange(0, len(line_split2), n):
        yield line_split2[i:i+n]

separate_word = list(chunks(line_split2, 3))

import pprint
pprint.pprint(separate_word)

count = 0
for lines in separate_word:
    count = count + 1
    print count

センテンスとして表示するリストとその前に表示する行番号をマージしようとしています。

1 the heart was
2 made to be
3 broken

何か提案はありますか?

4

4 に答える 4

2

あなたが使用することができますenumerate()

s = ['the heart was', 'made to be', 'broken']

for i, line in enumerate(s, 1):
    print '%d %s' %(i, line)

1 the heart was
2 made to be
3 broken

列挙の詳細については、http://docs.python.org/library/functions.html#enumerateを参照してください。

于 2012-05-05T20:28:08.307 に答える
1

enumerate()あなたがいるラインを追跡するために使用します:

for i, word in enumerate(separate_word, 1):
    print i, ' '.join(word)

> 1 the heart was
> 2 made to be
> 3 broken
于 2012-05-05T20:28:20.630 に答える
1

chunks独自の関数を作成する必要はありません。itertoolsドキュメントgrouperレシピを使用し、その結果を使用します。enumerate

enumerate(grouper(3, line_split2), start = 1)

のコードは次のgrouperとおりです。

from itertools import izip_longest

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
于 2012-05-05T20:28:53.670 に答える
0

forループでjoinを使用するだけです

import re
line = "the heart was made to be broken"
line_split2 = re.split(r'[ \t\n\r, ]+',line)

def chunks(line_split2, n):
 for i in xrange(0, len(line_split2), n):
    yield line_split2[i:i+n]

separate_word = chunks(line_split2, 3)


count = 0
for lines in separate_word:
    count = count + 1
    print count, " ".join(map(str,lines))

1 the heart was
2 made to be
3 broken
于 2012-05-05T20:38:16.320 に答える