Caractère de coupure + formfeed

bowbz Messages postés 8 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 2 octobre 2009 - 2 oct. 2009 à 14:15
bowbz Messages postés 8 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 2 octobre 2009 - 2 oct. 2009 à 15:27
Bonjour,

J'essaie de créer de multiples fichiers à partir d'un gros fichier. Dans ce gros fichier, il y a un séparateur que j'aimerai utiliser comme critère. Ce séparateur est le caractère ^L (le formfeed). En gros, le fichier est comme ceci :

---- début fichier
bcbc
bcbcb
^L <= j'amerai couper ici

sdsd
sddsds
^L <= idem

sdsds
dsdsd
^L <= et encore idem

END
----- fin fichier


Pour le moment j'ai ce code, qui ne marche pas

#!/usr/bin/python
# -*- coding: utf-8 -*-

# module codecs convertit en utf
import codecs

file_utf8 = codecs.open('fichier_in.txt','r','utf-8')

while True:
    ligne = file_utf8.readline()
    if ligne.rstrip() == 'END':
        print "on arrive à la fin, on sort du while"
        break
    if ligne == '^L':
        print "Trouvé le séparateur"
    else:
        print ligne
file_utf8.close()


La ligne qui me pose problème est donc

if ligne == '^L':

J'ai essayé de mettre le code unicode (u'\u000C'), le code décimal (12), j'ai aussi essayé de mettre ord(u'\u000C')) ou chr(12), mais rien n'y fait, je ne sais pas comment attraper ce formfeed dans le if.

Toute idée serait la bienvenue pour me sortir de ce guépier.


PS : dans le code j'avais noté certains caractères en majuscules, mais l'aperçu les met en minuscules, bizarre..

2 réponses

cs_pompoire Messages postés 8 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 12 janvier 2010 1
2 oct. 2009 à 15:23
bonjour,

à tout hasard, il ne manquerait pas le caractère de fin de ligne ("\n") ce qui donnerait :

if ligne.rstrip() == 'end\n':
print "on arrive à la fin, on sort du while"
break
if ligne == '^l\n':
print "trouvé le séparateur"
0
bowbz Messages postés 8 Date d'inscription jeudi 21 décembre 2000 Statut Membre Dernière intervention 2 octobre 2009
2 oct. 2009 à 15:27
Non ça ne marche pas. dans le premier if, il y a la méthoded rstrip() qui vire justement ce caractère, et d'après ce que j'ai compris, il virerait aussi le ^L, c'est pour cela que je ne l'ai pas mis dans le second if.
0
Rejoignez-nous