2011-09-22 76 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