2013-03-06 347 views
-2

我需要在python字符串的每個3個字符上添加一個空格,但沒有關於如何執行該操作的許多線索。Python - 如何在每個3個字符上添加空格?

字符串:

345 674 655 

就如何實現這一目標任何線索:

345674655 

,我需要的輸出?

最好的問候,

+5

什麼的'1234'所需的輸出最佳功能? – NPE 2013-03-06 17:39:31

回答

20

你只需要一種方法來遍歷你的字符串中塊3

>>> a = '345674655' 
>>> [a[i:i+3] for i in range(0, len(a), 3)] 
['345', '674', '655'] 

然後' '.join結果。

>>> ' '.join([a[i:i+3] for i in range(0, len(a), 3)]) 
'345 674 655' 

需要注意的是:

>>> [''.join(x) for x in zip(*[iter(a)]*3)] 
['345', '674', '655'] 

也適用於分區的字符串。這將任意iterables(不只是字符串)工作,但截斷,其長度不被3整除要恢復原始行爲的字符串,可以使用itertools.izip_longest(在py3k itertools.zip_longest):

>>> import itertools 
>>> [''.join(x) for x in itertools.izip_longest(*[iter(a)]*3, fillvalue=' ')] 
['345', '674', '655'] 

當然,你付出一點在方便閱讀,在這些後面的答案改進概括而言...

0

一個單行的解決方案將是

" ".join(splitAt(x,3)) 
然而

,Python是缺少splitAt()˚F油膏,所以自己定義一個

def splitAt(w,n): 
    for i in range(0,len(w),n): 
     yield w[i:i+n] 
0

與加入「 - 」經連結的各3個字符的第一,第二和第三個字符:

' '.join(a+b+c for a,b,c in zip(x[::3], x[1::3], x[2::3])) 

確保字符串長度可分3

1

基於@mgilson的回答

def litering_by_three(a): 
    return ' '.join([a[i:i + 3] for i in range(0, len(a), 3)]) 
# replace (↑) with you character like "," 
相關問題