【发布时间】:2020-12-22 18:11:47
【问题描述】:
为了正确格式化字符串,我需要将它分成不同长度的块。
例如,这是一个字符串 - 25c319f75e3fbed5a9f0497750ea12992b30d565,为了将其拆分为固定长度的块,我会简单地使用步骤和切片:
s = '25c319f75e3fbed5a9f0497750ea12992b30d565'
n = 2
print("-".join([s[i:i+n] for i in range(0, len(s), n)]))
但是,如果n 是要拆分的数字列表,我该怎么办,例如:
s = '25c319f75e3fbed5a9f0497750ea12992b30d565'
n = [8, 4, 4, 4, 4, 12] # edited for consistency - Coldspeed
我提出的唯一解决方案是:
print("-".join([s[0:8], s[8:12], s[12:16], s[16:20], s[20:24], s[24:32]]))
这不是pythonic,更不一定可靠的字符串长度很大。
最后一个代码示例的输出:
25c319f7-5e3f-bed5-a9f0-4977-50ea1299
那么这可以用更 Pythonic 的单线方式完成吗?如果不是,还有什么其他更自动化的方法可以做到这一点?
【问题讨论】: