Je retraite de gros fichiers csv avec Pandas (pour supprimer des
colonnes et des lignes inutiles) et Python (bibliothèque csv)
Vous trouverez ici :
https://drop.sans-nuage.fr/r/Lcj9I9_12h#xbtPIzJd6zt2Cu0JNojli+VBpCJxNHJ0B+E7legRgOE
un fichier csv avec deux champs séparés par un ;
Le second champ est pollué par un retour Í la ligne (\b). Avec gedit, ce
second champ apparaͮt sur une 2e ligne ligne !
Je sais le traiter sans problème avec LibreOffice. Mais je ne vois pas
comment supprimer ce \b avec Python (idéalement avec Pandas). Le bout de
fichier que je vous passe fait partie d'un fichier de plusieurs milliers
de lignes.
Je souhaite automatiser au maximum le retraitement afin de ne pas
conduire des utilisateurs peu agiles avec LibreOffice Í faire des
manipulations compliquées, notamment retirer ce \b invisible.
Je vous remercie,
--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
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
Olivier Miakinen
Bonjour, Le 14/08/2021 Í 07:56, Dominique a écrit :
Je retraite de gros fichiers csv avec Pandas (pour supprimer des colonnes et des lignes inutiles) et Python (bibliothèque csv) Vous trouverez ici : https://drop.sans-nuage.fr/r/Lcj9I9_12h#xbtPIzJd6zt2Cu0JNojli+VBpCJxNHJ0B+E7legRgOE> un fichier csv avec deux champs séparés par un ; Le second champ est pollué par un retour Í la ligne (b). Avec gedit, ce second champ apparaÍ®t sur une 2e ligne ligne !
Tout d'abord, le b n'est pas un passage Í la ligne mais un retour arrière (backspace, de code ASCII 08). Cela dit, dans ton fichier il y a bien un passage Í la ligne n au milieu de la chaÍ®ne : $ od -c test.csv 0000000 C E L I N E ; " F i l t r e s 0000020 t r u c t u r e l c o d i q u 0000040 e : , T R E S 342 200 246 . ( 0000060 0 2 9 0 0 5 ) n I d e n t i f i 0000100 a n t o r g a n i s m e ( C 0000120 O D E _ B U D C O L L ) , l i 0000140 s t e d e v a l e u r s a 0000160 u t o r i s 303 251 e s : 0 2 9 0000200 0 0 5 4 1 4 C 0 , 0 2 9 0 0 5 0000220 4 1 4 E 0 , 0 2 9 0 0 5 4 1 4 0000240 P 4 , 0 2 9 0 0 5 4 1 4 P 2 , 0000260 0 2 9 0 0 5 4 1 4 B 0 , 0 2 0000300 9 0 0 5 4 1 4 N 0 , 0 2 9 0 0 0000320 5 4 1 4 0 0 , 0 2 9 0 0 5 4 1 0000340 4 P 5 , 0 2 9 0 0 5 4 1 4 P 1 0000360 , 0 2 9 0 0 5 4 1 4 G 0 " n
Je sais le traiter sans problème avec LibreOffice. Mais je ne vois pas comment supprimer ce b avec Python (idéalement avec Pandas). Le bout de fichier que je vous passe fait partie d'un fichier de plusieurs milliers de lignes.
Le supprimer me semble une mauvaise idée car cela concatènerait « (029005) » et « Identifiant » en « (029005)Identifiant ». Je suppose que tu préfèrerais remplacer ce n par une espace.
Je souhaite automatiser au maximum le retraitement afin de ne pas conduire des utilisateurs peu agiles avec LibreOffice Í faire des manipulations compliquées, notamment retirer ce b invisible.
str.replace("n", " ") Attention : il ne faut le faire que ligne par ligne (ou cellule par cellule) après lecture du fichier CSV, pour ne pas supprimer les sauts de ligne qui séparent des champs différents. Si tu veux le faire sur tout le fichier, alors il faudra un traitement qui tient compte de la position des guillemets et ce sera un poil plus complexe. -- Olivier Miakinen
Bonjour,
Le 14/08/2021 Í 07:56, Dominique a écrit :
Je retraite de gros fichiers csv avec Pandas (pour supprimer des
colonnes et des lignes inutiles) et Python (bibliothèque csv)
Vous trouverez ici :
https://drop.sans-nuage.fr/r/Lcj9I9_12h#xbtPIzJd6zt2Cu0JNojli+VBpCJxNHJ0B+E7legRgOE>
un fichier csv avec deux champs séparés par un ;
Le second champ est pollué par un retour Í la ligne (b). Avec gedit, ce
second champ apparaͮt sur une 2e ligne ligne !
Tout d'abord, le b n'est pas un passage Í la ligne mais un retour
arrière (backspace, de code ASCII 08).
Cela dit, dans ton fichier il y a bien un passage Í la ligne n au
milieu de la chaͮne :
$ od -c test.csv
0000000 C E L I N E ; " F i l t r e s
0000020 t r u c t u r e l c o d i q u
0000040 e : , T R E S 342 200 246 . (
0000060 0 2 9 0 0 5 ) n I d e n t i f i
0000100 a n t o r g a n i s m e ( C
0000120 O D E _ B U D C O L L ) , l i
0000140 s t e d e v a l e u r s a
0000160 u t o r i s 303 251 e s : 0 2 9
0000200 0 0 5 4 1 4 C 0 , 0 2 9 0 0 5
0000220 4 1 4 E 0 , 0 2 9 0 0 5 4 1 4
0000240 P 4 , 0 2 9 0 0 5 4 1 4 P 2 ,
0000260 0 2 9 0 0 5 4 1 4 B 0 , 0 2
0000300 9 0 0 5 4 1 4 N 0 , 0 2 9 0 0
0000320 5 4 1 4 0 0 , 0 2 9 0 0 5 4 1
0000340 4 P 5 , 0 2 9 0 0 5 4 1 4 P 1
0000360 , 0 2 9 0 0 5 4 1 4 G 0 " n
Je sais le traiter sans problème avec LibreOffice. Mais je ne vois pas
comment supprimer ce b avec Python (idéalement avec Pandas). Le bout de
fichier que je vous passe fait partie d'un fichier de plusieurs milliers
de lignes.
Le supprimer me semble une mauvaise idée car cela concatènerait
« (029005) » et « Identifiant » en « (029005)Identifiant ». Je
suppose que tu préfèrerais remplacer ce n par une espace.
Je souhaite automatiser au maximum le retraitement afin de ne pas
conduire des utilisateurs peu agiles avec LibreOffice Í faire des
manipulations compliquées, notamment retirer ce b invisible.
str.replace("n", " ")
Attention : il ne faut le faire que ligne par ligne (ou cellule par
cellule) après lecture du fichier CSV, pour ne pas supprimer les
sauts de ligne qui séparent des champs différents.
Si tu veux le faire sur tout le fichier, alors il faudra un traitement
qui tient compte de la position des guillemets et ce sera un poil plus
complexe.
Bonjour, Le 14/08/2021 Í 07:56, Dominique a écrit :
Je retraite de gros fichiers csv avec Pandas (pour supprimer des colonnes et des lignes inutiles) et Python (bibliothèque csv) Vous trouverez ici : https://drop.sans-nuage.fr/r/Lcj9I9_12h#xbtPIzJd6zt2Cu0JNojli+VBpCJxNHJ0B+E7legRgOE> un fichier csv avec deux champs séparés par un ; Le second champ est pollué par un retour Í la ligne (b). Avec gedit, ce second champ apparaÍ®t sur une 2e ligne ligne !
Tout d'abord, le b n'est pas un passage Í la ligne mais un retour arrière (backspace, de code ASCII 08). Cela dit, dans ton fichier il y a bien un passage Í la ligne n au milieu de la chaÍ®ne : $ od -c test.csv 0000000 C E L I N E ; " F i l t r e s 0000020 t r u c t u r e l c o d i q u 0000040 e : , T R E S 342 200 246 . ( 0000060 0 2 9 0 0 5 ) n I d e n t i f i 0000100 a n t o r g a n i s m e ( C 0000120 O D E _ B U D C O L L ) , l i 0000140 s t e d e v a l e u r s a 0000160 u t o r i s 303 251 e s : 0 2 9 0000200 0 0 5 4 1 4 C 0 , 0 2 9 0 0 5 0000220 4 1 4 E 0 , 0 2 9 0 0 5 4 1 4 0000240 P 4 , 0 2 9 0 0 5 4 1 4 P 2 , 0000260 0 2 9 0 0 5 4 1 4 B 0 , 0 2 0000300 9 0 0 5 4 1 4 N 0 , 0 2 9 0 0 0000320 5 4 1 4 0 0 , 0 2 9 0 0 5 4 1 0000340 4 P 5 , 0 2 9 0 0 5 4 1 4 P 1 0000360 , 0 2 9 0 0 5 4 1 4 G 0 " n
Je sais le traiter sans problème avec LibreOffice. Mais je ne vois pas comment supprimer ce b avec Python (idéalement avec Pandas). Le bout de fichier que je vous passe fait partie d'un fichier de plusieurs milliers de lignes.
Le supprimer me semble une mauvaise idée car cela concatènerait « (029005) » et « Identifiant » en « (029005)Identifiant ». Je suppose que tu préfèrerais remplacer ce n par une espace.
Je souhaite automatiser au maximum le retraitement afin de ne pas conduire des utilisateurs peu agiles avec LibreOffice Í faire des manipulations compliquées, notamment retirer ce b invisible.
str.replace("n", " ") Attention : il ne faut le faire que ligne par ligne (ou cellule par cellule) après lecture du fichier CSV, pour ne pas supprimer les sauts de ligne qui séparent des champs différents. Si tu veux le faire sur tout le fichier, alors il faudra un traitement qui tient compte de la position des guillemets et ce sera un poil plus complexe. -- Olivier Miakinen
Dominique
Le 15/08/2021 Í 10:16, Olivier Miakinen a écrit :
Tout d'abord, le b n'est pas un passage Í la ligne mais un retour arrière (backspace, de code ASCII 08).
Oui, tu as raison, merci.
Cela dit, dans ton fichier il y a bien un passage Í la ligne n au milieu de la chaÍ®ne : $ od -c test.csv
Je ne connaissais pas od. C'est idéal pour voir les caractères « invisibles » :-)
0000000 C E L I N E ; " F i l t r e s 0000020 t r u c t u r e l c o d i q u 0000040 e : , T R E S 342 200 246 . ( 0000060 0 2 9 0 0 5 ) n I d e n t i f i 0000100 a n t o r g a n i s m e ( C 0000120 O D E _ B U D C O L L ) , l i 0000140 s t e d e v a l e u r s a 0000160 u t o r i s 303 251 e s : 0 2 9 0000200 0 0 5 4 1 4 C 0 , 0 2 9 0 0 5 0000220 4 1 4 E 0 , 0 2 9 0 0 5 4 1 4 0000240 P 4 , 0 2 9 0 0 5 4 1 4 P 2 , 0000260 0 2 9 0 0 5 4 1 4 B 0 , 0 2 0000300 9 0 0 5 4 1 4 N 0 , 0 2 9 0 0 0000320 5 4 1 4 0 0 , 0 2 9 0 0 5 4 1 0000340 4 P 5 , 0 2 9 0 0 5 4 1 4 P 1 0000360 , 0 2 9 0 0 5 4 1 4 G 0 " n Le supprimer me semble une mauvaise idée car cela concatènerait « (029005) » et « Identifiant » en « (029005)Identifiant ». Je suppose que tu préfèrerais remplacer ce n par une espace.
Cette concaténation ne me pose pas de problème dans le sens o͹, après « Céline », les premières informations qui m'intéressent sont après le mot « autorisées : »
str.replace("n", " ")
Ça a fonctionné exactement comme je le désirais, et depuis Pandas. Merci :-)
Attention : il ne faut le faire que ligne par ligne (ou cellule par cellule) après lecture du fichier CSV, pour ne pas supprimer les sauts de ligne qui séparent des champs différents.
Il n'y en a pas. Cet incident ne s'est pas produit. Merci pour ton aide et la découverte d'od :-) Bonne journée, -- Dominique Courriel : dominique point sextant ate orange en France Esto quod es
Le 15/08/2021 Í 10:16, Olivier Miakinen a écrit :
Tout d'abord, le b n'est pas un passage Í la ligne mais un retour
arrière (backspace, de code ASCII 08).
Oui, tu as raison, merci.
Cela dit, dans ton fichier il y a bien un passage Í la ligne n au
milieu de la chaͮne :
$ od -c test.csv
Je ne connaissais pas od. C'est idéal pour voir les caractères «
invisibles » :-)
0000000 C E L I N E ; " F i l t r e s
0000020 t r u c t u r e l c o d i q u
0000040 e : , T R E S 342 200 246 . (
0000060 0 2 9 0 0 5 ) n I d e n t i f i
0000100 a n t o r g a n i s m e ( C
0000120 O D E _ B U D C O L L ) , l i
0000140 s t e d e v a l e u r s a
0000160 u t o r i s 303 251 e s : 0 2 9
0000200 0 0 5 4 1 4 C 0 , 0 2 9 0 0 5
0000220 4 1 4 E 0 , 0 2 9 0 0 5 4 1 4
0000240 P 4 , 0 2 9 0 0 5 4 1 4 P 2 ,
0000260 0 2 9 0 0 5 4 1 4 B 0 , 0 2
0000300 9 0 0 5 4 1 4 N 0 , 0 2 9 0 0
0000320 5 4 1 4 0 0 , 0 2 9 0 0 5 4 1
0000340 4 P 5 , 0 2 9 0 0 5 4 1 4 P 1
0000360 , 0 2 9 0 0 5 4 1 4 G 0 " n
Le supprimer me semble une mauvaise idée car cela concatènerait
« (029005) » et « Identifiant » en « (029005)Identifiant ». Je
suppose que tu préfèrerais remplacer ce n par une espace.
Cette concaténation ne me pose pas de problème dans le sens o͹, après «
Céline », les premières informations qui m'intéressent sont après le mot
« autorisées : »
str.replace("n", " ")
Ça a fonctionné exactement comme je le désirais, et depuis Pandas. Merci :-)
Attention : il ne faut le faire que ligne par ligne (ou cellule par
cellule) après lecture du fichier CSV, pour ne pas supprimer les
sauts de ligne qui séparent des champs différents.
Il n'y en a pas. Cet incident ne s'est pas produit.
Merci pour ton aide et la découverte d'od :-)
Bonne journée,
--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Le 15/08/2021 Í 10:16, Olivier Miakinen a écrit :
Tout d'abord, le b n'est pas un passage Í la ligne mais un retour arrière (backspace, de code ASCII 08).
Oui, tu as raison, merci.
Cela dit, dans ton fichier il y a bien un passage Í la ligne n au milieu de la chaÍ®ne : $ od -c test.csv
Je ne connaissais pas od. C'est idéal pour voir les caractères « invisibles » :-)
0000000 C E L I N E ; " F i l t r e s 0000020 t r u c t u r e l c o d i q u 0000040 e : , T R E S 342 200 246 . ( 0000060 0 2 9 0 0 5 ) n I d e n t i f i 0000100 a n t o r g a n i s m e ( C 0000120 O D E _ B U D C O L L ) , l i 0000140 s t e d e v a l e u r s a 0000160 u t o r i s 303 251 e s : 0 2 9 0000200 0 0 5 4 1 4 C 0 , 0 2 9 0 0 5 0000220 4 1 4 E 0 , 0 2 9 0 0 5 4 1 4 0000240 P 4 , 0 2 9 0 0 5 4 1 4 P 2 , 0000260 0 2 9 0 0 5 4 1 4 B 0 , 0 2 0000300 9 0 0 5 4 1 4 N 0 , 0 2 9 0 0 0000320 5 4 1 4 0 0 , 0 2 9 0 0 5 4 1 0000340 4 P 5 , 0 2 9 0 0 5 4 1 4 P 1 0000360 , 0 2 9 0 0 5 4 1 4 G 0 " n Le supprimer me semble une mauvaise idée car cela concatènerait « (029005) » et « Identifiant » en « (029005)Identifiant ». Je suppose que tu préfèrerais remplacer ce n par une espace.
Cette concaténation ne me pose pas de problème dans le sens o͹, après « Céline », les premières informations qui m'intéressent sont après le mot « autorisées : »
str.replace("n", " ")
Ça a fonctionné exactement comme je le désirais, et depuis Pandas. Merci :-)
Attention : il ne faut le faire que ligne par ligne (ou cellule par cellule) après lecture du fichier CSV, pour ne pas supprimer les sauts de ligne qui séparent des champs différents.
Il n'y en a pas. Cet incident ne s'est pas produit. Merci pour ton aide et la découverte d'od :-) Bonne journée, -- Dominique Courriel : dominique point sextant ate orange en France Esto quod es
Olivier Miakinen
Le 16/08/2021 Í 09:57, Dominique m'a répondu :
$ od -c test.csv
Je ne connaissais pas od. C'est idéal pour voir les caractères « invisibles » :-)
L'option -c est pratique quand il y a beaucoup de caractères US-ASCII. Pour un fichier plus « binaire » j'utilise le plus souvent -t x1.
[...]
str.replace("n", " ")
Ça a fonctionné exactement comme je le désirais, et depuis Pandas. Merci :-)
Eh bien c'est parfait, ravi d'avoir aidé. Note que pour un remplacement un peu plus complexe il y aurait eu les expressions rationnelles : <https://docs.python.org/fr/3/library/re.html> et un groupe pour en parler : fr.comp.lang.regexp Cordialement, -- Olivier Miakinen
Le 16/08/2021 Í 09:57, Dominique m'a répondu :
$ od -c test.csv
Je ne connaissais pas od. C'est idéal pour voir les caractères «
invisibles » :-)
L'option -c est pratique quand il y a beaucoup de caractères US-ASCII.
Pour un fichier plus « binaire » j'utilise le plus souvent -t x1.
[...]
str.replace("n", " ")
Ça a fonctionné exactement comme je le désirais, et depuis Pandas. Merci :-)
Eh bien c'est parfait, ravi d'avoir aidé. Note que pour un remplacement
un peu plus complexe il y aurait eu les expressions rationnelles :
<https://docs.python.org/fr/3/library/re.html>
et un groupe pour en parler :
fr.comp.lang.regexp
Je ne connaissais pas od. C'est idéal pour voir les caractères « invisibles » :-)
L'option -c est pratique quand il y a beaucoup de caractères US-ASCII. Pour un fichier plus « binaire » j'utilise le plus souvent -t x1.
[...]
str.replace("n", " ")
Ça a fonctionné exactement comme je le désirais, et depuis Pandas. Merci :-)
Eh bien c'est parfait, ravi d'avoir aidé. Note que pour un remplacement un peu plus complexe il y aurait eu les expressions rationnelles : <https://docs.python.org/fr/3/library/re.html> et un groupe pour en parler : fr.comp.lang.regexp Cordialement, -- Olivier Miakinen
Dominique
Le 16/08/2021 Í 12:20, Olivier Miakinen a écrit :
L'option -c est pratique quand il y a beaucoup de caractères US-ASCII. Pour un fichier plus « binaire » j'utilise le plus souvent -t x1. Eh bien c'est parfait, ravi d'avoir aidé. Note que pour un remplacement un peu plus complexe il y aurait eu les expressions rationnelles : <https://docs.python.org/fr/3/library/re.html>
Je maÍ®trise correctement les REGEX avec LIBO. Je ne m'y suis jamais essayé en Python. Il est vrai que le besoin ne s'est pas encore fait sentir.
et un groupe pour en parler : fr.comp.lang.regexp
Je viens de m'y abonner :-) Merci Í toi -- Dominique Courriel : dominique point sextant ate orange en France Esto quod es
Le 16/08/2021 Í 12:20, Olivier Miakinen a écrit :
L'option -c est pratique quand il y a beaucoup de caractères US-ASCII.
Pour un fichier plus « binaire » j'utilise le plus souvent -t x1.
Eh bien c'est parfait, ravi d'avoir aidé. Note que pour un remplacement
un peu plus complexe il y aurait eu les expressions rationnelles :
<https://docs.python.org/fr/3/library/re.html>
Je maͮtrise correctement les REGEX avec LIBO. Je ne m'y suis jamais
essayé en Python. Il est vrai que le besoin ne s'est pas encore fait sentir.
et un groupe pour en parler :
fr.comp.lang.regexp
Je viens de m'y abonner :-)
Merci Í toi
--
Dominique
Courriel : dominique point sextant ate orange en France
Esto quod es
Le 16/08/2021 Í 12:20, Olivier Miakinen a écrit :
L'option -c est pratique quand il y a beaucoup de caractères US-ASCII. Pour un fichier plus « binaire » j'utilise le plus souvent -t x1. Eh bien c'est parfait, ravi d'avoir aidé. Note que pour un remplacement un peu plus complexe il y aurait eu les expressions rationnelles : <https://docs.python.org/fr/3/library/re.html>
Je maÍ®trise correctement les REGEX avec LIBO. Je ne m'y suis jamais essayé en Python. Il est vrai que le besoin ne s'est pas encore fait sentir.
et un groupe pour en parler : fr.comp.lang.regexp
Je viens de m'y abonner :-) Merci Í toi -- Dominique Courriel : dominique point sextant ate orange en France Esto quod es