versiones guia español descargar actualizar python readlines

python - guia - qgis manual



Leyendo un archivo sin nuevas líneas. (8)

En Python, llamando

temp = open(filename,''r'').readlines()

da como resultado una lista en la que cada elemento es una línea en el archivo. Es un poco estúpido pero aún así: readlines() también escribe caracteres de nueva línea en cada elemento, algo que no deseo que suceda. ¿Cómo puedo evitarlo?


Prueba esto:

u=open("url.txt","r") url=u.read().replace(''/n'','''') print(url)


Puede leer todo el archivo y dividir líneas usando str.splitlines :

temp = file.read().splitlines()

O puedes despojar la nueva línea a mano:

temp = [line[:-1] for line in file]

Nota: esta última solución solo funciona si el archivo termina con una nueva línea, de lo contrario, la última línea perderá un carácter.

Esta suposición es cierta en la mayoría de los casos (especialmente para los archivos creados por editores de texto, que a menudo agregan una nueva línea final de todos modos).

Si desea evitar esto, puede agregar una nueva línea al final del archivo:

with open(the_file, ''r+'') as f: f.seek(-1, 2) # go at the end of the file if f.read(1) != ''/n'': # add missing newline if not already present f.write(''/n'') f.flush() f.seek(0) lines = [line[:-1] for line in f]

O una alternativa más simple es strip la nueva línea en su lugar:

[line.rstrip(''/n'') for line in file]

O incluso, aunque bastante ilegible:

[line[:-(line[-1] == ''/n'') or len(line)+1] for line in file]

Lo que explota el hecho de que el valor de retorno de or no es un valor booleano, sino el objeto que se evaluó como verdadero o falso.

El método readlines es en realidad equivalente a:

def readlines(self): lines = [] for line in iter(self.readline, ''''): lines.append(line) return lines # or equivalently def readlines(self): lines = [] while True: line = self.readline() if not line: break lines.append(line) return lines

Como readline() mantiene la nueva línea también readlines() mantiene.

Nota: para simetría a readlines() el método writelines() no agrega nuevas líneas finales, por lo que f2.writelines(f.readlines()) produce una copia exacta de f en f2 .


otro ejemplo:

Leyendo archivo una fila a la vez. Eliminar caracteres no deseados desde el final de la cadena str.rstrip(chars)

with open(filename, ''r'') as fileobj: for row in fileobj: print( row.rstrip(''/n'') )

vea también str.strip ([chars]) y str.lstrip ([chars])

(python> = 2.0)


import csv with open(filename) as f: csvreader = csv.reader(f) for line in csvreader: print(line[0])


def getText(): file=open("ex1.txt","r"); names=file.read().split("/n"); for x,word in enumerate(names): if(len(word)>=20): return 0; print "length of ",word,"is over 20" break; if(x==20): return 0; break; else: return names; def show(names): for word in names: len_set=len(set(word)) print word," ",len_set for i in range(1): names=getText(); if(names!=0): show(names); else: break;


my_file = open("first_file.txt", "r") for line in my_file.readlines(): if line[-1:] == "/n": print(line[:-1]) else: print(line) my_file.close()


temp = open(filename,''r'').read().split(''/n'')


temp = open(filename,''r'').read().splitlines()