novice ici. J'essaie de lire les lignes d'un fichier, cependant une seule ligne dans un .txt
le fichier a un \n
au milieu quelque part et en essayant de lire cette ligne avec .readline python le coupe au milieu et le produit sur deux lignes.
lorsque je copie et passe la ligne dans cette fenêtre, elle apparaît comme deux lignes. J'ai donc téléchargé le fichier ici: https://ufile.io/npt3n
également ajouté une capture d'écran du fichier tel qu'il apparaît dans le fichier txt.
.
f= open("f.txt",mode='r',encoding='utf8')
for i in range(4):
lineText=f.readline()
print(lineText)
f.close()
Python 3 vous permet de définir quelle est la nouvelle ligne pour un fichier particulier. Il est rarement utilisé, car le mode par défaut newlines universels est très tolérant:
Lors de la lecture des entrées du flux, si le retour à la ligne est Aucun, le mode de retour à la ligne universel est activé. Les lignes dans l'entrée peuvent se terminer par '\ n', '\ r' ou '\ r\n', et celles-ci sont traduites en '\ n' avant d'être renvoyées à l'appelant.
Donc, ici, vous devez préciser que seul "\ r\n" est une fin de ligne:
f= open("f.txt",mode='r',encoding='utf8', newline='\r\n')
# use enumerate to show that second line is read as a whole
for i, line in enumerate(fd):
print(i, line)
Au lieu d'utiliser la fonction readline, vous pouvez lire tout le contenu et diviser les lignes par regex:
import re
with open("txt", "r") as f:
content = f.read()
# remove end line characters
content = content.replace("\n", "")
# split by lines
lines = re.compile("(\[[0-9//, :\]]+)").split(content)
# clean "" elements
lines = [x for x in lines if x != ""]
# join by pairs
lines = [i + j for i, j in Zip(lines[::2], lines[1::2])]
Si tout le contenu a le même début, vous pouvez [...] le séparer, puis nettoyer toutes les parties en omettant les éléments "". Ensuite, vous pouvez joindre chaque partie avec la fonction Zip ( https://stackoverflow.com/a/5851033/1038301 )