単一の変数に492文字の文字列が格納されているとします。最初の50文字を印刷してから次の行に移動し、次の50文字を印刷して、最後に42文字の行を印刷するにはどうすればよいですか?
質問する
19397 次
4 に答える
6
chars_per_line = 50
for i in range(0, len(s), chars_per_line):
print s[i:i+chars_per_line]
于 2013-01-16T01:03:52.873 に答える
2
for line in mystring.splitlines():
print line[:50]
于 2013-01-16T01:05:45.337 に答える
0
In [363]: mystr = "A"*492
In [364]: print '\n'.join(mystr[i*width:(i+1)*width] for i in range(int(math.ceil(float(len(mystr))/width))))
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
于 2013-01-16T01:16:16.423 に答える
0
@Martijn Pietersが示唆しているように、(nの)チャンクでイテレーターを反復する方法があれば、これは簡単です。そして、その質問を読んだら、それを行う方法があります。
したがって、itertoolsレシピ(または他の質問からあなたが好む他のもの)grouper
からの実装を考えると:
lines = [''.join(group) for group in grouper(50, my_string, '')]
または、それらを印刷したいだけの場合:
for group in grouper(50, my_string, ''):
print ''.join(group)
それが存在することを知ったらgrouper
、これはJoelCornettの答えよりも簡単だと思います。彼は最初のバージョンでは機能せず、修正する必要があったことに注意してください。これは間違いを犯すことはほとんど不可能です。通常、フェンスポストエラーの可能性を排除するものはすべて優れています。そのため、Cスタイルのループの代わりにfor
ループin
などがあります。enumerate
for
ここでそれが実行されています:
>>> my_string='1234567890'*49+'12'
>>> print my_string
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
>>> # That was ugly…
>>> for group in grouper(50, my_string, ''):
... print ''.join(group)
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
12345678901234567890123456789012345678901234567890
123456789012345678901234567890123456789012
>>> # Pretty!
于 2013-01-16T02:46:35.067 に答える