2014-03-26 43 views
1

我有一個字符串(不含空格),我需要將其拆分爲具有相同長度項目的列表。我知道split()方法,但據我所知,這隻能通過空格分割,而不能通過長度分割。將字符串拆分成一個列表,其中包含等長的項目

我想要做的是這樣的:

string = "abcdefghijklmnopqrstuvwx" 
string = string.Split(0 - 3) 
print(string) 

>>> ["abcd", "efgh", "ijkl", "mnop", "qrst", "uvwx"] 

我曾經想過通過列表循環,但我不知道是否有一個簡單的解決方案?

+0

@ m.wasowski你提到的問題是要求迭代器,它有點不同。 – EOL

回答

11
>>> [string[start:start+4] for start in xrange(0, len(string), 4)] 
['abcd', 'efgh', 'ijkl', 'mnop', 'qrst', 'uvwx'] 

即使最後一個小於4個字符,它也能正常工作。

+2

完美,就像一個魅力,現在我只是等待另外4分鐘接受答案! –

+2

爲什麼downvote? – EOL

2

如何:

>>> string = 'abcdefghijklmnopqrstuvwx' 
>>> map(''.join, zip(*[iter(string)]*4)) 
['abcd', 'efgh', 'ijkl', 'mnop', 'qrst', 'uvwx'] 
>>> 
+1

我喜歡Python的存在方式 – stanleyxu2005

+0

可愛但浪費:字符串被分解成後來重新組裝的字符。另外,當字符串的長度不是4的倍數時,這將無法選擇最後一個字符。 – EOL

2

或:

map(lambda i:string[i:i+4], xrange(0, len(string), 4)) 
+0

xrange是好的。但是地圖+拉姆達沒有明顯比列表理解更清晰...... – EOL

-1

使用textwrap標準庫模塊:

>>> import textwrap 
>>> textwrap.wrap('abcdefghijklmnopq', 4) 
['abcd', 'efgh', 'ijkl', 'mnop', 'q'] 

編輯:廢話,這不正確的用空格工作。由於最後一次遇到問題,我仍然在這裏留下答案,實際上我試圖包裝文本,所以也許其他人也一樣。

+0

「Hi!\ nOh!\ nAh!」失敗。實際上,'textwrap.wrap()'用於包含單詞的段落。 – EOL

+1

我剛剛注意到,可惜。 – RemcoGerlich

相關問題