爲了正確格式化字符串,我被要求將其拆分成不同長度的塊。將字符串拆分成不同長度的塊
作爲一個例子,這是一個字符串 - 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班輪。請注意,它是低效的,因爲它不斷調用總和。但它的工作。 –