2011-09-22 74 views
1

Hy大家,我想要做这样的事情,但我的逻辑不是那么乐观。我有一个消息,那一定是80个字符中的每一行:我能做到这一点是这样的:python函数打破n行的信息

msg = '' 
msg_list = [] 

for i in dict['msg']: 
    if len(msg) >= 80 and i.isspace(): 
    msg_list.append(msg) 
    msg = "" 

    msg += i 

这里的问题是,当我的味精没有字符80,任何想法,使这个块工作做得更好?

回答

9
import textwrap 
msg_list = textwrap.wrap(dict['msg'], 80) 
+1

除了这是作业,所以他必须自己编写代码。 – agf

+0

我会投票-1,除非我有一个竞争的答案,这将是有偏见的。我认为这是错误的做法。虽然很高兴知道Python的标准库可以做到这一点,但作业的重点可能是设计一个算法并在Python中进行编码。 –

+0

嗯,原来的海报并没有说这是家庭作业,标签是由agf添加的... – jpa

0

检查第80个字符。如果这是一个空间,你可以打破这条线。如果没有检查第79。冲洗。重复

让我们假设你在字符76处爆发。现在检查第(76 + 80)字符是否是空格。等等。

如果你不能把它变成代码,发布你的最佳尝试,我们可以从那里建议。

另外,for i in dict['msg']:没有意义。您是否重新定义了内置的dict类型?

1
import re 

input = "put your text in here" 
tokens = re.split('\s', input) 

w = [] 
s = "" 
for token in tokens: 
    if len(s) + len(token) < 80: 
     s = " ".join([s,token]) 
    else: 
     w.append(s) 
     s = "" 
print w