Meilleure réponse
Parce que cest stupide. Je ne peux pas penser à une application utile de cette fonctionnalité et jai essayé de le faire.
(Voir la réponse de Romain pour une approche sérieuse sur «pourquoi exactement», jai juste besoin de flamboyer 🙂 Je peux fournir quelques solutions de contournement, cependant)
Pourquoi naccepte-t-il pas un paramètre de plus (cest-à-dire, «finir», qui est par défaut à «\ n», ou un indicateur booléen, keepnl = True), afin que je puisse choisir de conserver / modifier la fin de la ligne, si, et seulement si jen ai besoin, dépasse ma compréhension.
Ceci « décision politique » peu intuitive la rend pratiquement inutilisable et, au lieu de la lenteur et la difficulté à comprendre:
lines = [ ln[:-1] for ln in f.readlines() ]
Je préfère généralement
lines = f.read().split("\n")
Beaucoup plus simple à mes yeux. Je suppose quil est trop tard pour le changer maintenant.
Oui, il y a une possibilité dautres fins de ligne, selon le système dexploitation.
Je suppose que même les bibliothèques standard python ont leurs défauts aussi.
Réponse
Ces caractères sont pas extras. Ils sont présents dans le fichier texte. Ils marquent la fin des lignes.
Voici une autre façon de lire un fichier texte, appelé sample.txt
, qui illustre.
>>> with open("sample.txt") as sample:
... contents = sample.readlines()
... print(contents)
...
["This is line number 1\n", "This is line number 2\n", "This is line number 3\n", "This is line number 4\n", "This is line number 5\n", "This is line number 6\n", "This is line number 7\n", "This is line number 8\n", "This is line number 9\n", "This is line number 10\n", "This is line number 11\n", "This is line number 12\n", "This is line number 13\n", "This is line number 14\n", "This is line number 15\n", "This is line number 16\n", "This is line number 17\n", "This is line number 18\n", "This is line number 19\n", "This is line number 20\n"]
- Chaque ligne dans le la sortie se termine par
\n
car ceux-ci figuraient dans les lignes du fichier texte. - Vous feriez mieux dutiliser
with
lorsque vous ouvrez un fichier car cette construction organise la fermeture des fichiers après utilisation. - Je remarque que vous avez appelé votre fichier
file
. Vous devriez éviter dutiliser des noms qui font partie du langage Python.
Si vous voulez du code qui supprime les nouvelles lignes, voici une option:
>>> with open("sample.txt") as sample:
... for line in sample:
... print(line.rstrip())
...
This is line number 1
This is line number 2
This is line number 3
This is line number 4
This is line number 5
This is line number 6
This is line number 7
This is line number 8
This is line number 9
This is line number 10
This is line number 11
This is line number 12
This is line number 13
This is line number 14
This is line number 15
This is line number 16
This is line number 17
This is line number 18
This is line number 19
This is line number 20
Remarque t chapeau Jai utilisé rstrip
qui supprime les espaces blancs uniquement de lextrémité droite dune chaîne.