El mejor método para la lectura de archivos de nueva línea delimitada y descartando los saltos de línea?

StackOverflow https://stackoverflow.com/questions/544921

  •  23-08-2019
  •  | 
  •  

Pregunta

Estoy tratando de determinar la mejor manera de manejar la eliminación de saltos de línea cuando se lee en la nueva línea delimitada archivos en Python.

Lo que yo he llegado con el siguiente código es, incluir el código de usar y tirar para poner a prueba.

import os

def getfile(filename,results):
   f = open(filename)
   filecontents = f.readlines()
   for line in filecontents:
     foo = line.strip('\n')
     results.append(foo)
   return results

blahblah = []

getfile('/tmp/foo',blahblah)

for x in blahblah:
    print x

Sugerencias?

¿Fue útil?

Solución

lines = open(filename).read().splitlines()

Otros consejos

Esto es un generador que hace lo que solicitó. En este caso, usando rstrip es suficiente y ligeramente más rápido que tira.

lines = (line.rstrip('\n') for line in open(filename))

Sin embargo, lo más probable es que desea utilizar este para deshacerse de arrastre espacios en blanco también.

lines = (line.rstrip() for line in open(filename))

¿Qué opinas acerca de este enfoque?

with open(filename) as data:
    datalines = (line.rstrip('\r\n') for line in data)
    for line in datalines:
        ...do something awesome...

expresión generadora evita cargar todo el archivo en la memoria y with asegura de cerrar el archivo

for line in file('/tmp/foo'):
    print line.strip('\n')

Sólo tiene que utilizar las expresiones generadoras:

blahblah = (l.rstrip() for l in open(filename))
for x in blahblah:
    print x

También quiero aconsejarle en contra de leer todo el archivo en la memoria - bucle sobre los generadores es mucho más eficiente en grandes conjuntos de datos

.

Yo uso este

def cleaned( aFile ):
    for line in aFile:
        yield line.strip()

A continuación, puedo hacer cosas como esta.

lines = list( cleaned( open("file","r") ) )

O, que puede extenderse limpiado con funciones adicionales para, por ejemplo, la caída de líneas en blanco o Omitir líneas de comentario o lo que sea.

lo haría así:

f = open('test.txt')
l = [l for l in f.readlines() if l.strip()]
f.close()
print l
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top