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

11 投票
5 回答
21890 浏览
提问于 2025-04-17 18:09

我想在一个Python字符串的每三个字符后面加一个空格,但我不知道该怎么做。

这个字符串是:

345674655

我需要的输出是:

345 674 655   

有没有什么方法可以做到这一点?

最好的祝福,

5 个回答

2

一行代码的解决方案是

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

不过,Python没有一个叫做 splitAt() 的函数,所以你需要自己定义一个

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

根据 @mgilson 的回答,最好的函数

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

输出示例:

>>> x="500000"
>>> print(litering_by_three(x))
'500 000'
>>> 

或者对于 , 的示例:

>>> def litering_by_three(a):
>>>         return " ".join([a[::-1][i:i+3] for i in range(0, len(a), 3)])[::-1]
>>>     #  replace (↑) with you character like ","
>>> print(litering_by_three(x))
'500,000'
>>> 
27

你只需要一种方法,把你的字符串每三位分成一组。

>>> 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整除,就会截断字符串。为了恢复原来的效果,你可以使用 itertools.izip_longest(在Python 3中是 itertools.zip_longest):

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

当然,为了提高通用性,这些后面的答案在可读性上会稍微牺牲一些……

撰写回答