2024-05-14 23:51:04 发布
网友
我需要在python字符串的每3个字符上添加一个空格,但是没有太多关于如何这样做的线索。
字符串:
345674655
我需要的输出:
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 ","
一条线的解决方案是
" ".join(splitAt(x,3))
但是,Python缺少一个splitAt()函数,因此请定义一个
splitAt()
def splitAt(w,n): for i in range(0,len(w),n): yield w[i:i+n]
你只需要一种方法在你的字符串上迭代3块。
>>> a = '345674655' >>> [a[i:i+3] for i in range(0, len(a), 3)] ['345', '674', '655']
然后' '.join结果。
' '.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']
也适用于对字符串进行分区。这将适用于任意iterable(不只是字符串),但会截断长度不能被3整除的字符串。要恢复原始文件的行为,可以在py3k中使用itertools.izip_longest(itertools.zip_longest):
itertools.izip_longest
itertools.zip_longest
>>> import itertools >>> [''.join(x) for x in itertools.izip_longest(*[iter(a)]*3, fillvalue=' ')] ['345', '674', '655']
当然,你在阅读方面付出了一点代价,因为在后一个答案中改进了泛化。。。
基于@mgilson答案的最佳函数
一条线的解决方案是
但是,Python缺少一个
splitAt()
函数,因此请定义一个你只需要一种方法在你的字符串上迭代3块。
然后
' '.join
结果。注意:
也适用于对字符串进行分区。这将适用于任意iterable(不只是字符串),但会截断长度不能被3整除的字符串。要恢复原始文件的行为,可以在py3k中使用
itertools.izip_longest
(itertools.zip_longest
):当然,你在阅读方面付出了一点代价,因为在后一个答案中改进了泛化。。。
相关问题 更多 >
编程相关推荐