reading prints print org open files example create and python python-2.7 readline

prints - python print example



Deshacerse de / n al usar.readlines() (11)

Después de abrir el archivo, la lista de comprensión puede hacer esto en una línea:

fh=open(''filename'') newlist = [line.rstrip() for line in fh.readlines()] fh.close()

Solo recuerde cerrar su archivo después.

Esta pregunta ya tiene una respuesta aquí:

Tengo un archivo .txt con valores en él.

Los valores se enumeran de la siguiente manera:

Value1 Value2 Value3 Value4

Mi objetivo es poner los valores en una lista. Cuando lo hago, la lista se ve así:

[''Value1/n'', ''Value2/n'', ...]

El /n no es necesario.

Aquí está mi código:

t = open(''filename.txt'', ''r+w'') contents = t.readline() alist = [] for i in contents: alist.append(i)


Esto debería hacer lo que quiera (archivos de contenido en una lista, por línea, sin / n)

with open(filename) as f: mylist = f.read().splitlines()


La forma más fácil de hacerlo es escribir file.readline()[0:-1] Esto leerá todo menos el último carácter, que es la nueva línea.


Puede usar .rstrip(''/n'') para eliminar solo las nuevas líneas del final de la cadena:

for i in contents: alist.append(i.rstrip(''/n''))

Esto deja el resto del espacio en blanco intacto. Si no te preocupan los espacios en blanco al inicio y al final de tus líneas, entonces el gran martillo pesado se llama .strip() .

Sin embargo, dado que está leyendo un archivo y de todos modos está incorporando todo a la memoria, mejor utilizar el método str.splitlines() ; esto divide una cadena en separadores de línea y devuelve una lista de líneas sin esos separadores; file.read() en el resultado file.read() y no uses file.readlines() en absoluto:

alist = t.read().splitlines()


Recientemente utilicé esto para leer todas las líneas de un archivo:

alist = open(''maze.txt'').read().split()

o puede usar esto para ese poco de seguridad extra adicional:

with f as open(''maze.txt''): alist = f.read().split()

No funciona con espacios en blanco entre texto en una sola línea, pero parece que su archivo de ejemplo podría no tener espacios en blanco dividiendo los valores. Es una solución simple y devuelve una lista precisa de valores, y no agrega una cadena vacía: '''' para cada línea vacía, como una nueva línea al final del archivo.


Tuve el mismo problema y encontré la siguiente solución para ser muy eficiente. Espero que te ayude a ti o a todos los que quieran hacer lo mismo.

En primer lugar, comenzaría con una declaración "con", ya que garantiza el correcto abrir / cerrar del archivo.

Debería verse algo como esto:

with open("filename.txt", "r+") as f: contents = [x.strip() for x in f.readlines()]

Si desea convertir esas cadenas (cada elemento en la lista de contenidos es una cadena) en números enteros o flotantes, puede hacer lo siguiente:

contents = [float(contents[i]) for i in range(len(contents))]

Usa int lugar de float si quieres convertir a entero.

Es mi primera respuesta en SO, lo siento si no está en el formato correcto.


Utilicé la función de tira para deshacerme del carácter de línea nueva ya que las líneas divisorias arrojaban errores de memoria en el archivo de 4 gb.

Código de muestra:

with open(''C://aapl.csv'',''r'') as apple: for apps in apple.readlines(): print(apps.strip())


Yo haría esto:

alist = [line.rstrip() for line in open(''filename.txt'')]

o:

with open(''filename.txt'') as f: alist = [line.rstrip() for line in f]


para cada cadena en su lista, use .strip() que elimina el espacio en blanco desde el principio o el final de la cadena:

for i in contents: alist.append(i.strip())

Pero dependiendo de su caso de uso, es mejor que utilice algo como numpy.loadtxt o incluso numpy.genfromtxt si necesita una buena matriz de los datos que está leyendo del archivo.


from string import rstrip with open(''bvc.txt'') as f: alist = map(rstrip, f)

Nota Bene: rstrip() elimina los espacios en blanco, es decir: /f , /n , /r , /t , /v , /x y en blanco ,
pero supongo que solo te interesa mantener a los personajes significativos en las líneas. Entonces, el simple map(strip, f) se ajustará mejor, eliminando también los espacios en blanco del encabezado.

Si realmente desea eliminar solo los símbolos NL /n y RF /r , haga:

with open(''bvc.txt'') as f: alist = f.read().splitlines()

splitlines () sin argumento pasado no mantiene los símbolos NL y RF (Windows graba los archivos con NLRF al final de las líneas, al menos en mi máquina) pero mantiene los otros espacios en blanco, especialmente los espacios en blanco y las pestañas.

.

with open(''bvc.txt'') as f: alist = f.read().splitlines(True)

tiene el mismo efecto que

with open(''bvc.txt'') as f: alist = f.readlines()

es decir, la NL y RF se mantienen


with open(''D://file.txt'', ''r'') as f1: lines = f1.readlines() lines = [s[:-1] for s in lines]