簡體   English   中英

pythonic方式將字符串拆分為可變長度的塊?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM