débutant sous python, j'ai un petit problème pour lire un fichier text
qui comporte des retours chariots (\n x0A) en dehors des fins de ligne
lorsque je lis le fichier squentiellement par readline(), les \n sont
pris en compte et mes lignes ne sont pas complètes
Les "vrai" fin de lignes finissent par x0Dx0A, donc j'ai fait :
all = fichier.read()
sp = str(all).split("\n")
for st in sp:
print st
ca split bien à \n , mais ca split aussi ou il y en a pas besoin
j'ai essayé
- avec \r : ca split rien, mais c'est peu etre la fonction str() qui
supprime le CR
- avec \x0A : ca split rien, la c'est bizare, car à priori c'est parail
que \n
donc la question est comment extraire les lignes d'un fichier texte,
uniquement en prenant en compte les caractères ascii x0Dx0A ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Quentel
bonjour à tous
débutant sous python, j'ai un petit problème pour lire un fichier text qui comporte des retours chariots (n x0A) en dehors des fins de ligne
lorsque je lis le fichier squentiellement par readline(), les n sont pris en compte et mes lignes ne sont pas complètes
Les "vrai" fin de lignes finissent par x0Dx0A, donc j'ai fait : all = fichier.read() sp = str(all).split("n") for st in sp: print st
ca split bien à n , mais ca split aussi ou il y en a pas besoin j'ai essayé - avec r : ca split rien, mais c'est peu etre la fonction str() qui supprime le CR - avec x0A : ca split rien, la c'est bizare, car à priori c'est parail que n
donc la question est comment extraire les lignes d'un fichier texte, uniquement en prenant en compte les caractères ascii x0Dx0A ?
Olivier
Essaye avec 'rn' :
all = fichier.read() sp = all.split('rn') for st in sp: print st
Pierre
bonjour à tous
débutant sous python, j'ai un petit problème pour lire un fichier text
qui comporte des retours chariots (n x0A) en dehors des fins de ligne
lorsque je lis le fichier squentiellement par readline(), les n sont
pris en compte et mes lignes ne sont pas complètes
Les "vrai" fin de lignes finissent par x0Dx0A, donc j'ai fait :
all = fichier.read()
sp = str(all).split("n")
for st in sp:
print st
ca split bien à n , mais ca split aussi ou il y en a pas besoin
j'ai essayé
- avec r : ca split rien, mais c'est peu etre la fonction str() qui
supprime le CR
- avec x0A : ca split rien, la c'est bizare, car à priori c'est parail
que n
donc la question est comment extraire les lignes d'un fichier texte,
uniquement en prenant en compte les caractères ascii x0Dx0A ?
Olivier
Essaye avec 'rn' :
all = fichier.read()
sp = all.split('rn')
for st in sp:
print st
débutant sous python, j'ai un petit problème pour lire un fichier text qui comporte des retours chariots (n x0A) en dehors des fins de ligne
lorsque je lis le fichier squentiellement par readline(), les n sont pris en compte et mes lignes ne sont pas complètes
Les "vrai" fin de lignes finissent par x0Dx0A, donc j'ai fait : all = fichier.read() sp = str(all).split("n") for st in sp: print st
ca split bien à n , mais ca split aussi ou il y en a pas besoin j'ai essayé - avec r : ca split rien, mais c'est peu etre la fonction str() qui supprime le CR - avec x0A : ca split rien, la c'est bizare, car à priori c'est parail que n
donc la question est comment extraire les lignes d'un fichier texte, uniquement en prenant en compte les caractères ascii x0Dx0A ?
Olivier
Essaye avec 'rn' :
all = fichier.read() sp = all.split('rn') for st in sp: print st
Pierre
Christophe Cavalaria
ownowl wrote:
bonjour à tous
débutant sous python, j'ai un petit problème pour lire un fichier text qui comporte des retours chariots (n x0A) en dehors des fins de ligne
lorsque je lis le fichier squentiellement par readline(), les n sont pris en compte et mes lignes ne sont pas complètes
Les "vrai" fin de lignes finissent par x0Dx0A, donc j'ai fait : all = fichier.read() sp = str(all).split("n") for st in sp: print st
ca split bien à n , mais ca split aussi ou il y en a pas besoin j'ai essayé - avec r : ca split rien, mais c'est peu etre la fonction str() qui supprime le CR - avec x0A : ca split rien, la c'est bizare, car à priori c'est parail que n
donc la question est comment extraire les lignes d'un fichier texte, uniquement en prenant en compte les caractères ascii x0Dx0A ?
Olivier
Quand tu ouvres un fichier en mode texte sous Windows, toutes les "fausses" fin de lignes 0x0D,0x0A sont remplacées par les vraies fin de lignes 'n'
str(all) ne fait rien car fichier.read() renvoye déjà un objet du type str.
Dans tous les cas, vérifie comment tu as ouvert ton fichier texte et passe le en binaire si tu veux avoir un parfait controle sur le traitement des retour à la ligne.
ownowl wrote:
bonjour à tous
débutant sous python, j'ai un petit problème pour lire un fichier text
qui comporte des retours chariots (n x0A) en dehors des fins de ligne
lorsque je lis le fichier squentiellement par readline(), les n sont
pris en compte et mes lignes ne sont pas complètes
Les "vrai" fin de lignes finissent par x0Dx0A, donc j'ai fait :
all = fichier.read()
sp = str(all).split("n")
for st in sp:
print st
ca split bien à n , mais ca split aussi ou il y en a pas besoin
j'ai essayé
- avec r : ca split rien, mais c'est peu etre la fonction str() qui
supprime le CR
- avec x0A : ca split rien, la c'est bizare, car à priori c'est parail
que n
donc la question est comment extraire les lignes d'un fichier texte,
uniquement en prenant en compte les caractères ascii x0Dx0A ?
Olivier
Quand tu ouvres un fichier en mode texte sous Windows, toutes les "fausses"
fin de lignes 0x0D,0x0A sont remplacées par les vraies fin de lignes 'n'
str(all) ne fait rien car fichier.read() renvoye déjà un objet du type str.
Dans tous les cas, vérifie comment tu as ouvert ton fichier texte et passe
le en binaire si tu veux avoir un parfait controle sur le traitement des
retour à la ligne.
débutant sous python, j'ai un petit problème pour lire un fichier text qui comporte des retours chariots (n x0A) en dehors des fins de ligne
lorsque je lis le fichier squentiellement par readline(), les n sont pris en compte et mes lignes ne sont pas complètes
Les "vrai" fin de lignes finissent par x0Dx0A, donc j'ai fait : all = fichier.read() sp = str(all).split("n") for st in sp: print st
ca split bien à n , mais ca split aussi ou il y en a pas besoin j'ai essayé - avec r : ca split rien, mais c'est peu etre la fonction str() qui supprime le CR - avec x0A : ca split rien, la c'est bizare, car à priori c'est parail que n
donc la question est comment extraire les lignes d'un fichier texte, uniquement en prenant en compte les caractères ascii x0Dx0A ?
Olivier
Quand tu ouvres un fichier en mode texte sous Windows, toutes les "fausses" fin de lignes 0x0D,0x0A sont remplacées par les vraies fin de lignes 'n'
str(all) ne fait rien car fichier.read() renvoye déjà un objet du type str.
Dans tous les cas, vérifie comment tu as ouvert ton fichier texte et passe le en binaire si tu veux avoir un parfait controle sur le traitement des retour à la ligne.
ownowl
Quand tu ouvres un fichier en mode texte sous Windows, toutes les "fausses" fin de lignes 0x0D,0x0A sont remplacées par les vraies fin de lignes 'n'
str(all) ne fait rien car fichier.read() renvoye déjà un objet du type str.
Dans tous les cas, vérifie comment tu as ouvert ton fichier texte et passe le en binaire si tu veux avoir un parfait controle sur le traitement des retour à la ligne.
effectivement en l'ouvrant en mode binaire c'est nettement mieux
f = common.openFile( fichier , "rb") sp = f.read().split("rn") for s in sp : ... merci à vous deux Olivier
Quand tu ouvres un fichier en mode texte sous Windows, toutes les "fausses"
fin de lignes 0x0D,0x0A sont remplacées par les vraies fin de lignes 'n'
str(all) ne fait rien car fichier.read() renvoye déjà un objet du type str.
Dans tous les cas, vérifie comment tu as ouvert ton fichier texte et passe
le en binaire si tu veux avoir un parfait controle sur le traitement des
retour à la ligne.
effectivement en l'ouvrant en mode binaire c'est nettement mieux
f = common.openFile( fichier , "rb")
sp = f.read().split("rn")
for s in sp :
...
merci à vous deux
Olivier
Quand tu ouvres un fichier en mode texte sous Windows, toutes les "fausses" fin de lignes 0x0D,0x0A sont remplacées par les vraies fin de lignes 'n'
str(all) ne fait rien car fichier.read() renvoye déjà un objet du type str.
Dans tous les cas, vérifie comment tu as ouvert ton fichier texte et passe le en binaire si tu veux avoir un parfait controle sur le traitement des retour à la ligne.
effectivement en l'ouvrant en mode binaire c'est nettement mieux
f = common.openFile( fichier , "rb") sp = f.read().split("rn") for s in sp : ... merci à vous deux Olivier
Laurent Pointal
ownowl wrote:
bonjour à tous
débutant sous python, j'ai un petit problème pour lire un fichier text qui comporte des retours chariots (n x0A) en dehors des fins de ligne
lorsque je lis le fichier squentiellement par readline(), les n sont pris en compte et mes lignes ne sont pas complètes
Les "vrai" fin de lignes finissent par x0Dx0A, donc j'ai fait : all = fichier.read() sp = str(all).split("n") for st in sp: print st
ca split bien à n , mais ca split aussi ou il y en a pas besoin j'ai essayé - avec r : ca split rien, mais c'est peu etre la fonction str() qui supprime le CR - avec x0A : ca split rien, la c'est bizare, car à priori c'est parail que n
donc la question est comment extraire les lignes d'un fichier texte, uniquement en prenant en compte les caractères ascii x0Dx0A ?
Pour ne pas avoir à t'occuper de savoir si c'est CR ou CR+LF qui a été utilisé comme fin de ligne dans un fichier texte (peut-être même LF seul sur MacOS), ouvre ton fichier en mode lecture 'universelle'.
fichier = open ("toto.txt","rU")
après, tu n'es pas obligé de lire tout le fichier en mémoire, tu peux faire des choses comme:
for ligne in fichier : print ligne
Si tu veux vraiment tout récupérer dans une grosse liste:
all = fichier.readlines()
Enfin, pour avoir plus d'infos sur les méthodes des fichiers:
help(file)
A+
Laurent Pointal
ownowl wrote:
bonjour à tous
débutant sous python, j'ai un petit problème pour lire un fichier text
qui comporte des retours chariots (n x0A) en dehors des fins de ligne
lorsque je lis le fichier squentiellement par readline(), les n sont
pris en compte et mes lignes ne sont pas complètes
Les "vrai" fin de lignes finissent par x0Dx0A, donc j'ai fait :
all = fichier.read()
sp = str(all).split("n")
for st in sp:
print st
ca split bien à n , mais ca split aussi ou il y en a pas besoin
j'ai essayé
- avec r : ca split rien, mais c'est peu etre la fonction str() qui
supprime le CR
- avec x0A : ca split rien, la c'est bizare, car à priori c'est parail
que n
donc la question est comment extraire les lignes d'un fichier texte,
uniquement en prenant en compte les caractères ascii x0Dx0A ?
Pour ne pas avoir à t'occuper de savoir si c'est CR ou CR+LF qui a été
utilisé comme fin de ligne dans un fichier texte (peut-être même LF seul
sur MacOS), ouvre ton fichier en mode lecture 'universelle'.
fichier = open ("toto.txt","rU")
après, tu n'es pas obligé de lire tout le fichier en mémoire, tu peux faire
des choses comme:
for ligne in fichier :
print ligne
Si tu veux vraiment tout récupérer dans une grosse liste:
all = fichier.readlines()
Enfin, pour avoir plus d'infos sur les méthodes des fichiers:
débutant sous python, j'ai un petit problème pour lire un fichier text qui comporte des retours chariots (n x0A) en dehors des fins de ligne
lorsque je lis le fichier squentiellement par readline(), les n sont pris en compte et mes lignes ne sont pas complètes
Les "vrai" fin de lignes finissent par x0Dx0A, donc j'ai fait : all = fichier.read() sp = str(all).split("n") for st in sp: print st
ca split bien à n , mais ca split aussi ou il y en a pas besoin j'ai essayé - avec r : ca split rien, mais c'est peu etre la fonction str() qui supprime le CR - avec x0A : ca split rien, la c'est bizare, car à priori c'est parail que n
donc la question est comment extraire les lignes d'un fichier texte, uniquement en prenant en compte les caractères ascii x0Dx0A ?
Pour ne pas avoir à t'occuper de savoir si c'est CR ou CR+LF qui a été utilisé comme fin de ligne dans un fichier texte (peut-être même LF seul sur MacOS), ouvre ton fichier en mode lecture 'universelle'.
fichier = open ("toto.txt","rU")
après, tu n'es pas obligé de lire tout le fichier en mémoire, tu peux faire des choses comme:
for ligne in fichier : print ligne
Si tu veux vraiment tout récupérer dans une grosse liste:
all = fichier.readlines()
Enfin, pour avoir plus d'infos sur les méthodes des fichiers: