Python - 如何在每3个字符后添加空格?
我想在一个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']
当然,为了提高通用性,这些后面的答案在可读性上会稍微牺牲一些……