Tengo la siguiente cadena y lista:

myString = "a:::b:::c:::d ..... "  where ':::' is sort of delimiter
myList = [1,2,3,4.......]

Sé cómo recorrer los valores de la lista, pero ¿cómo puedo reemplazar cada aparición de ':::' con el siguiente valor en la lista, de modo que mi resultado final sea el siguiente:

myString = "a1b2c3d ...."
1
Jimit Raithatha 11 may. 2016 a las 03:21

3 respuestas

La mejor respuesta

Rápida y sucia:

myString = "a:::b:::c:::d"
myList = [1,2,3,4]

s = iter(myString.split(":::"))

print(next(s) + "".join(str(y)+x for x,y in zip(s,myList)))

Imprime a1b2c3d

2
L3viathan 11 may. 2016 a las 00:35

Así es como lo resolví.

def join_string_and_list( string, list ):
    string = string.split(":::")
    for i in range(0, len(string)):
        if string[i] != '' and len(list) > 0:
            string.append("{}{}".format(string.pop(0),list.pop(0)))

    return str("".join(string))

myString = "a:::b:::c:::d:::"  #where ':::' is sort of delimiter
myList = [1,2,3,4]

print(join_string_and_list( myString, myList ))
0
Dustin Nunyo 11 may. 2016 a las 01:35
l = myString.split(":::")    
result = "".join([x + str(y) for (x,y) in zip(l, myList)])
2
Prateek 11 may. 2016 a las 00:42