Deutsch English Français Italiano |
<sfaih5$2pdt$1@cabale.usenet-fr.net> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder6.news.weretis.net!4.us.feeder.erje.net!2.eu.feeder.erje.net!feeder.erje.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!.POSTED!not-for-mail From: Olivier Miakinen <om+news@miakinen.net> Newsgroups: fr.comp.lang.python Subject: =?UTF-8?Q?Re:_Caract=c3=a8re_parasite_dans_une_cellule_de_tableur.?= Date: Sun, 15 Aug 2021 10:16:38 +0200 Organization: There's no cabale Lines: 65 Message-ID: <sfaih5$2pdt$1@cabale.usenet-fr.net> References: <sf7lu3$1c7m$1@gioia.aioe.org> NNTP-Posting-Host: 132.184.116.78.rev.sfr.net Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: cabale.usenet-fr.net 1629015397 91581 78.116.184.132 (15 Aug 2021 08:16:37 GMT) X-Complaints-To: abuse@usenet-fr.net NNTP-Posting-Date: Sun, 15 Aug 2021 08:16:37 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0 SeaMonkey/2.53.1 In-Reply-To: <sf7lu3$1c7m$1@gioia.aioe.org> Bytes: 4050 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