当n是随机的时,用n分割字符串

时间:2015-08-25 20:00:15

标签: python split slice

我尝试将字符串拆分为n,当每个切片的n是随机的时。因此,程序将生成n,取字符串的前n个字符并将它们附加到列表中,为n生成新值,然后获取字符串的下n个值并重复。

我现有的代码没有按预期工作:

string = '1234567890'
splitted = []

prev = 0
while True:
    n = random.randint(1,3)
    splitted.append(string[0:n])
    prev = prev + n
    if prev >= len(string)-1:
        break
print splitted

2 个答案:

答案 0 :(得分:1)

我明白了。

string = '123456789'
splitted = []

prev = 0
while True:
    n = random.randint(1,3)
    splitted.append(string[prev:prev+n])
    prev = prev + n
    if prev >= len(string)-1:
        break
print splitted

答案 1 :(得分:0)

这个生成器可以解决这个问题:

def randSplit(word, splits):
    for splitLen in splits:
        if splitLen > len(word):
            break
        yield word[:splitLen]
        word = word[splitLen::]

您可以像以下一样使用它:

>>> print(list(randSplit("3.14159",[1,4,2])))
['3', '.141', '59']
>>> print(list(randSplit("3.14159",[1,4,3])))
['3', '.141']

请注意splits可以是任何迭代器。如果你想要随机分割长度,你可以使用这个迭代器:

def randGen(low,hi):
    while True:
        yield random.randint(low,hi)

您可以像以下一样使用它:

>>> print(list(randSplit("1234567890",randGen(1,3))))
['123', '4', '5', '67', '89']
>>> print(list(randSplit("1234567890",randGen(1,3))))
['123', '456', '78', '9', '0']