Reemplazar una cadena en la lista de listas

Tengo una lista de listas de cadenas como:

example = [["string 1", "a\r\ntest string:"],["string 1", "test 2: another\r\ntest string"]] 

Me gustaría reemplazar el "\r\n" con un espacio (y quitar el ":" al final de todas las cadenas).

Para una lista normal, usaría la comprensión de lista para eliminar o reemplazar un elemento como

 example = [x.replace('\r\n','') for x in example] 

o incluso una función lambda

 map(lambda x: str.replace(x, '\r\n', ''),example) 

pero no puedo hacerlo funcionar para una lista anidada. ¿Alguna sugerencia?

    Bueno, piensa en lo que está haciendo tu código original:

     example = [x.replace('\r\n','') for x in example] 

    Estás utilizando el método .replace() en cada elemento de la lista como si fuera una cadena. ¡Pero cada elemento de esta lista es otra lista! No desea llamar a .replace() en la lista secundaria, desea llamar a cada uno de sus contenidos.

    Para una lista anidada, use la lista de comprensión anidada!

     example = [["string 1", "a\r\ntest string:"],["string 1", "test 2: another\r\ntest string"]] example = [[x.replace('\r\n','') for x in l] for l in example] print example 

     [['string 1', 'atest string:'], ['string 1', 'test 2: anothertest string']] 

     example = [[x.replace('\r\n','') for x in i] for i in example] 

    En caso de que sus listas se vuelvan más complicadas que las que dio como ejemplo, por ejemplo, si tuvieran tres capas de anidamiento, las siguientes irán a través de la lista y todas sus sub-listas reemplazarán la \ r \ n con espacio en cualquier cadena se encuentra a través de

     def replace_chars(s): return s.replace('\r\n', ' ') def recursively_apply(l, f): for n, i in enumerate(l): if type(i) is list: l[n] = recursively_apply(l[n], f) elif type(i) is str: l[n] = f(i) return l example = [[["dsfasdf", "another\r\ntest extra embedded"], "ans a \r\n string here"], ['another \r\nlist'], "and \r\n another string"] print recursively_apply(example, replace_chars) 

    El siguiente ejemplo, iterar entre listas de listas (sublistas), para reemplazar una cadena, una palabra.

     myoldlist=[['aa bbbbb'],['dd myword'],['aa myword']] mynewlist=[] for i in xrange(0,3,1): mynewlist.append([x.replace('myword', 'new_word') for x in myoldlist[i]]) print mynewlist # ['aa bbbbb'],['dd new_word'],['aa new_word']