[英]pythonic way to split string into variable length chunks?
例如,輸入1,2,6,1
字符串0123456789
將為:
[0,12,345678,9]
一種方法是使用itertools.islice
:
from itertools import islice
chunks = (1,2,6,1)
s = '0123456789'
assert len(s) >= sum(chunks)
it = iter(s)
result = [int(''.join(islice(it, i))) for i in chunks]
print(result)
# [0, 12, 345678, 9]
不是那么pythonic,但是寫起來很有趣:
def split(a,*b):
def split_rec(a,b,l):
print a
if len(b) == 0:
return l
cut_point = b[0]
l.append(a[0:cut_point])
return split_rec(a[cut_point:], b[1:], l)
return split_rec(a,b,[])
print split("1234567890",1,2,6,1)
使用基本代碼獲得結果的另一種簡單方式。
a="0123456789"
inp=[1,2,6,1]
start_pos=[0] #Fix first start position
x=0
for i in inp: #Calculate start positions of slices
x=x+i
start_pos.append(x)
res=[]
for i in range(len(inp)): #Cut out slices
res.append(int(a[start_pos[i]:start_pos[i]+inp[i]]))
print (res)
[0, 12, 345678, 9]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.