我需要在python字符串的每3个字符上添加一个空格,但没有很多关于如何操作的线索。
字符串:
345674655
我需要的输出:
345 674 655
有关如何实现这一目标的任何线索?
最诚挚的问候,
答案 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_longest
(itertools.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 ","