Python - 如何在每3个字符上添加空格?

时间:2013-03-06 17:37:34

标签: python

我需要在python字符串的每3个字符上添加一个空格,但没有很多关于如何操作的线索。

字符串:

345674655

我需要的输出:

345 674 655   

有关如何实现这一目标的任何线索?

最诚挚的问候,

4 个答案:

答案 0 :(得分:22)

你只需要一种方法来迭代你的字符串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']

也适用于分区字符串。这适用于任意迭代(不仅仅是字符串),但截断长度不能被3整除的字符串。要恢复原始行为,可以在py3k中使用itertools.izip_longestitertools.zip_longest ):

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

当然,在后面这些答案中,为了改进概括,你需要付出一些简单的阅读费用......

答案 1 :(得分:2)

如何反转字符串从单位开始跳3,然后再次反转。目标是获得“12345”。

n="12345"    
" ".join([n[::-1][i:i+3] for i in range(0, len(n), 3)])[::-1]

答案 2 :(得分:1)

单行解决方案

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

但是,Python缺少splitAt()函数,因此请自己定义一个

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

答案 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 ","