En Python, appeler
temp = open(filename,'r').readlines()
résulte en une liste dans laquelle chaque élément est une ligne du fichier. C'est un peu stupide mais quand même: readlines()
écrit aussi un caractère de nouvelle ligne sur chaque élément, ce que je ne souhaite pas. Comment puis-je l'éviter?
Vous pouvez lire le fichier entier et les lignes fractionnées en utilisant str.splitlines
:
_temp = file.read().splitlines()
_
Ou vous pouvez décaper la nouvelle ligne à la main:
_temp = [line[:-1] for line in file]
_
Remarque: cette dernière solution ne fonctionne que si le fichier se termine par une nouvelle ligne, sinon la dernière ligne perd un caractère.
Cette hypothèse est vraie dans la plupart des cas (en particulier pour les fichiers créés par des éditeurs de texte, qui font quand même une fin de nouvelle ligne).
Si vous voulez éviter cela, vous pouvez ajouter une nouvelle ligne à la fin du fichier:
_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]
_
Ou une alternative plus simple consiste à strip
la nouvelle ligne à la place:
_[line.rstrip('\n') for line in file]
_
Ou même, bien que très illisible:
_[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
_
Ce qui exploite le fait que la valeur de retour de or
n’est pas un booléen, mais l’objet évalué comme étant vrai ou faux.
La méthode readlines
équivaut en réalité à:
_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
_
Étant donné que readline()
conserve la nouvelle ligne, readlines()
la conserve également.
Remarque: pour la symétrie de readlines()
la writelines()
la méthode ne ne ajoute pas de fin newlines, alors f2.writelines(f.readlines())
produit une copie exacte de f
in _f2
_.
temp = open(filename,'r').read().split('\n')
temp = open(filename,'r').read().splitlines()
un autre exemple:
Lecture du fichier une ligne à la fois. Suppression des caractères indésirables avec la fin de la chaîne str.rstrip(chars)
with open(filename, 'r') as fileobj:
for row in fileobj:
print( row.rstrip('\n') )
voir aussi str.strip([chars])
et str.lstrip([chars])
(python> = 2.0)
Essaye ça:
u=open("url.txt","r")
url=u.read().replace('\n','')
print(url)
import csv
with open(filename) as f:
csvreader = csv.reader(f)
for line in csvreader:
print(line[0])
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()