为了正确格式化字符串,我被要求将其拆分成不同长度的块。将字符串拆分成不同长度的块
作为一个例子,这是一个字符串 - 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
所以可以这样在更Python一个衬垫的方法呢?如果不是,其他更自动的方法是什么呢?
感谢您的回答。输出是 - '--- 19f75e3f' – ShellRox
现在输出结果是 - '--19f7-5e3' – ShellRox
@ShellRox有点晚了,但是这里是一个没有itertools的1班轮。请注意,它是低效的,因为它不断调用总和。但它的工作。 –