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 ?
Version imprimable
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]
Citation:
a newline character (\n) is left at the end of the string
[1] http://docs.python.org/tutorial/inpu...f-file-objectsCitation:
A 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:
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:
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.Citation:
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 />
Nickel ta réponse eyquem. :king:
Merci.