Tengo una lista que contiene un elemento ‘\n’ en ella.
Quiero quitar. sin embargo, el comando de eliminación no está funcionando para ti. ¿Alguien puede decirme qué estoy haciendo mal?

def main():
    list1 = ['\ng,g\ng,g,g\n', '\n', '\ns\ns,s\n', '\nd,d\nd\nd,d,d,d\n\n']
    print list1

    print list1.remove('\n')


if __name__ == '__main__':
    main()

También, si mi lista de contener muchas de esas entradas ‘\n’, ¿cómo puedo eliminar a todos ellos? Yo actualmente uso set() para obtener los duplicados y, a continuación, estoy tratando de conseguir el comando de quitar a trabajar. Sin embargo, el conjunto() comando parece modificar la clasificación de la lista. Prefiero recorrer la lista y en caso de un ‘\n’ se encuentra a sacarlo.

  • sólo para agregar; cuando trato de buscar todos los elementos que son ‘\n’, mi código no funciona. list1 = ['\ng,g\ng,g,g\n', '\n', '\ns\ns,s\n', '\nd,d\nd\nd,d,d,d\n\n'] print list1 for xx in list1: if xx == '\n': print xx

5 Comentarios

  1. 6

    La remove método modifica la lista en el lugar y devuelve None. Por lo tanto, cuando se utiliza print list1.remove('\n'), la lista se ha modificado, pero None se imprime. Hacerlo en dos pasos, en lugar de:

    list1.remove('\n')
    print list1

    Para eliminar todas las apariciones, más natural sería construir una nueva lista al excluir a los saltos de línea. Por ejemplo:

    list2 = [a for a in list1 if a != '\n']

    Si debe ser en el lugar, por alguna razón, a continuación, utilizar repetidamente list1.remove hasta que se produce una excepción:

    while True:
        try:
            list1.remove('\n')
        except ValueError:
            break
    • Gracias. no puedo creer que he perdido tanto tiempo en que un pequeño error. Yo estaba pensando que era por ‘\n’ ser un espacio en blanco y era ahora va a través de la regex tutoriales. -_-
  2. 3

    Quitando cosas de una lista es uno de los muchos usos de la lista de comprensión:

    no_n = [x for x in list1 if x != '\n']
    # to change the original list
    list1[:] = no_n
  3. 0
    list1 = ['\ng,g\ng,g,g\n', '\n', '\ns\ns,s\n', '\nd,d\nd\nd,d,d,d\n\n']
    list2 = []
    
    list2 = [el.replace('\n', '') for el in list1]
    
    print list2
       >>> 
    ['g,gg,g,g', '', 'ss,s', 'd,ddd,d,d,d']
    • La solución elimina todos los \n pero el OP parece estar pidiendo a sólo quitar elementos de la lista que son sólo ‘\n’.
  4. 0

    Funciona aquí:

    def main():
        list1 = ['\ng,g\ng,g,g\n', '\n', '\ns\ns,s\n', '\nd,d\nd\nd,d,d,d\n\n']
        print list1
        list1.remove('\n')
        print list1
    
    
    if __name__ == '__main__':
        main()

    Probarlo aquí: http://codepad.org/YXHOHgwv

    • «remove(‘\n’)» ?
    • Me refería a list1.remove(‘\n’)

Dejar respuesta

Please enter your comment!
Please enter your name here