Bonjour,
je voulais savoir si lors de la lecture d'un fichier lignes par lignes, Python se chargeait de nettoyer les caractères de fin de lignes, sachant qu'il y a des différencas entre Unix et Windows ?
Bonjour,
je voulais savoir si lors de la lecture d'un fichier lignes par lignes, Python se chargeait de nettoyer les caractères de fin de lignes, sachant qu'il y a des différencas entre Unix et Windows ?
Comme d'habitude, il suffit de lire la doc... [1][2]
a newline character (\n) is left at the end of the string[1] http://docs.python.org/tutorial/inpu...f-file-objectsA trailing newline character is kept in the string
[2] http://docs.python.org/library/stdty...#file.readline
N'ayant jamais eu la chance de tomber sur un texte qui explique clairement les fins de lignes avant que je sois confronté au problème, ni même aprés, j'ai longtemps eu le problème de ne pas savoir précisément ce qui se passait en fin de ligne. Je déduisais à partir de ce que j'observais comme résultat des instructions print après lecture par readline() ou readline()[:-1], mais c'était pénible.
Même les explications comme celles qu'a données Desintegr en référence ne me satisfont pas pleinement, j'aime bien voir et vérifier moi-même très précisément ce qui se passe.
J'ai fini par trouver un moyen de faire afficher tous les caractères d'une ligne quand elle est lue, y compris ceux qui indiquent la fin de ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 f = open('fichier') flignes = [] rd = 'go' while rd: rd = f.readline() flignes.append(rd) f.close() for u in xrange(len(flignes)): print flignes[u:u+1]
PS
En étendant à d'autres problématiques,
l'avantage d'afficher ainsi le contenu exact de ce qui est lu, c'est, quand on analyse un code source d'une page web, on voit aussi tous les signes de tabulations tels qu'ils existent dans le code source. C'est très pratique pour compter la position précise de tel ou tel motif dans une ligne et faire des découpages.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 import urllib f = urllib.urlopen('http://www.horlogeparlante.com/') fh = [] rd = 'go' while rd: rd = f.readline() fh.append(rd) f.close() for u in xrange(300,312): print u, fh[u:u+1] print print 'fh[300][27:] =',fh[300][27:]Dans l'exemple ci-dessus, on peut voir que des lignes terminent par '\n' et d'autres par '\r\n'. D'où l'intérêt de pouvoir visualiser exactement les choses.300 ['\t\t\t\t\t\t\t\t\t\t\t\t<a href="#sun">Soleil</a><br />\n']
301 ['\t\t\t\t<a href="#moon">Lune</a><br />\n']
302 ['\t\t\t\t\t\t\t\t<a href="#geolocalisation">Géolocalisation</a><br />\n']
303 ['\t\t\t\t<a href="#other-city">Autre(s) ville(s)</a><br />\n']
304 ['\t\t\t\t<a href="#informations">Autres informations</a><br />\n']
305 ['\t\t\t</div><!-- Fin liens rapides-->\n']
306 ['\t\t\t<div class="rub-nav-left">A propos de l\'heure</div>\r\n']
307 ['<div class="donnee-nav-left">\r\n']
308 ['\t<a href="heure-ete-heure-hiver.php">Heure d\'été - heure d\'hiver</a><br />\r\n']
309 ['\t<a href="timezones/zone-europe.htm">Zones horaires</a><br />\r\n']
310 ['</div><!-- calendriers-->\r\n']
311 ['<br />\r\n']
fh[300][27:] = Soleil</a><br />
Partager