¿Cómo haría para reemplazar una parte de ciertos elementos en una lista? (Python 3.x) Digamos que tengo una lista:

x = ["part2keep removeMe", "saveme removeMe", "third length to throw it off removeMe", "element to save", "KeepThisPart"]

Si quisiera eliminar solo la parte "removeMe", ¿cómo lo haría? Tengo esto hasta ahora:

def replaceExampleA(x, y):
    for i in x:
        if i[len(i)-8:len(i)-1] == "removeMe":
            y.append(i[0: -12])
        else:
            y.append(i)

Editar: Acabo de darme cuenta de que cometí un error: la lista es más como esta: x = ["part2keep removeMe 123", "saveme removeMe 12", "third length to throw it off removeMe 83", "element to save", "KeepThisPart"]

Necesito deshacerme de los números también de los elementos con "removeMe". Gracias

-2
James Sharkey 22 feb. 2018 a las 19:36

4 respuestas

La mejor respuesta
x = [s.replace('removeMe', '') for s in x]
2
Sagar B Hathwar 22 feb. 2018 a las 16:38

Puede usar regex para asegurarse de que el código siempre elimine removeMe solo cuando ocurre al final de la cadena:

import re
x = ["part2keep removeMe", "saveme removeMe", "third length to throw it off removeMe", "element to save", "KeepThisPart"]
new_x = [re.sub('\sremoveMe$', '', i) for i in x]

Salida:

['part2keep', 'saveme', 'third length to throw it off', 'element to save', 'KeepThisPart']
0
Ajax1234 22 feb. 2018 a las 16:43

Esto se puede lograr con la comprensión de la lista

x = ["part2keep removeMe", "saveme removeMe", "third length to throw it off removeMe"]

print(y.replace(' removeMe', '') for y in x)
1
dfundako 22 feb. 2018 a las 16:38

También puede usar la función map

new_x = map(lambda e: e.replace('removeMe', ''), x)

La ventaja de esto es que recuperas un generador. Entonces, en algunas situaciones, esto es más eficiente en la memoria. Si desea volver a una lista, al igual que las otras respuestas, debe convertirla nuevamente a una lista

new_x = list(new_x)
0
Fred 22 feb. 2018 a las 16:43