我需要在 python 字符串的每 3 个字符上添加一个空格,但没有太多关于如何操作的线索。
字符串:
345674655
我需要的输出:
345 674 655
关于如何实现这一目标的任何线索?
最好的祝福,
我需要在 python 字符串的每 3 个字符上添加一个空格,但没有太多关于如何操作的线索。
字符串:
345674655
我需要的输出:
345 674 655
关于如何实现这一目标的任何线索?
最好的祝福,
您只需要一种方法以 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 整除的字符串。要恢复原始的行为,您可以使用itertools.izip_longest
(itertools.zip_longest
在 py3k 中):
>>> import itertools
>>> [''.join(x) for x in itertools.izip_longest(*[iter(a)]*3, fillvalue=' ')]
['345', '674', '655']
当然,您需要为后一个答案中改进的概括性支付一点阅读费用......
基于@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 ","
输出示例:
>>> x="500000"
>>> print(litering_by_three(x))
'500 000'
>>>
或者,
例如:
>>> def litering_by_three(a):
>>> return ','.join([a[i:i + 3] for i in range(0, len(a), 3)])
>>> # replace (↑) with you character like ","
>>> print(litering_by_three(x))
'500,000'
>>>
单线解决方案将是
" ".join(splitAt(x,3))
然而,Python 缺少一个splitAt()
函数,所以定义自己一个
def splitAt(w,n):
for i in range(0,len(w),n):
yield w[i:i+n]
如何将字符串从单位开始反转 3,然后再次反转。目标是获得“12 345”。
n="12345"
" ".join([n[::-1][i:i+3] for i in range(0, len(n), 3)])[::-1]
用 '-' 连接每 3 个字符的第一个、第二个和第三个字符:
' '.join(a+b+c for a,b,c in zip(x[::3], x[1::3], x[2::3]))
确保字符串长度可被 3 整除