2010-10-07 45 views
3

子我有一个字符串是这样的:蟒蛇:打破字符串转换成使用for循环

row='saint george 1739 1799 violin concerti g 029 039 050 symphonie concertante for two violins g 024 bertrand cervera in 024 039 christophe guiot in 024 029 and thibault vieux violin soloists orchestre les archets de paris' 

我有这样的循环:

for n in range (1,int(len(row)/55)+1): 
print row[(n-1)*55:n*55] 

这是工作嘛!!

但是,它正在削减的空间:

saint george 1739 1799 violin concerti g 029 039 050 sy 
mphonie concertante for two violins g 024 bertrand cerv 
era in 024 039 christophe guiot in 024 029 and thibault 

我不希望它切的空间(不过我还是希望无论是55个字符或每行以内)

+0

你是什么意思“切割空间”? – SilentGhost 2010-10-07 22:57:54

回答

4
import textwrap 

row='saint george 1739 1799 violin concerti g 029 039 050 symphonie concertante for two violins g 024 bertrand cervera in 024 039 christophe guiot in 024 029 and thibault vieux violin soloists orchestre les archets de paris' 

print(textwrap.fill(row,width=55)) 
# saint george 1739 1799 violin concerti g 029 039 050 
# symphonie concertante for two violins g 024 bertrand 
# cervera in 024 039 christophe guiot in 024 029 and 
# thibault vieux violin soloists orchestre les archets de 
# paris 
3

看看textwrap模块。

+0

'textwrap'可以在单词边界内打破吗?呃,等等,这就是OP想要的,我想......我只是重读这个问题。 – intuited 2010-10-07 22:59:33

1

我认为最清楚的方式将是

for i in range(0, len(row), 55): 
    print test[i:i+55] 

哪里range的第三个参数是step值,即范围内的元素之间的差异。

编辑:刚刚重读您的问题,并意识到我不确定您是否希望它突破字边界或只是在每行的第55个字符处做一个硬性休息。

如果你确实想让它沿着单词边界突破,你应该通过unutbu和SilentGhost检查textwrap模块为suggested

+0

非常感谢。我编辑了一下这个问题 – 2010-10-07 22:57:15