La suppression de saut de ligne à partir d'un fichier csv
Je suis en train de traiter un fichier csv en python qui a ^M personnage dans le milieu de chaque ligne/ligne qui est un saut de ligne. Je ne peux pas ouvrir le fichier dans n'importe quel autre mode de 'rU'.
Si je fais ouvrir le fichier dans le "rU", qu'il lit dans le retour à la ligne et divise le fichier (création d'une nouvelle ligne) et me donne deux fois le nombre de lignes.
Je veux supprimer le saut de ligne tout à fait. Comment?
dos2unix
est ce que vous voulez.OriginalL'auteur ganesh reddy | 2013-01-17
Vous devez vous connecter pour publier un commentaire.
Noter que, comme les docs dire:
Ainsi, vous pouvez toujours coller un filtre sur les fichiers avant de les remettre à votre
reader
ouDictReader
. Au lieu de cela:Ce faire:
Que
'\r'
est le Python (et C) de l'orthographe^M
. Donc, c'est juste des bandes de toutes les^M
personnages, peu importe l'endroit où ils apparaissent, en remplaçant chacune avec une chaîne vide.D'abord, si vous souhaitez modifier le fichier avant d'exécuter votre script Python sur elle, pourquoi ne pas faire que de l'extérieur de Python?
sed
,tr
, de nombreux éditeurs de texte, etc. peut tous le faire pour vous. Voici un GNU sed exemple:Mais si vous voulez le faire en Python, ce n'est pas beaucoup plus détaillé, et vous trouverez peut-être plus lisible, donc:
Tout d'abord, vous ne pouvez pas vraiment modifier un fichier en place, si vous souhaitez insérer ou supprimer à partir du milieu. La solution habituelle est d'écrire un nouveau fichier, et déplacez le nouveau fichier sur l'ancien (Unix uniquement) ou supprimer l'ancien (cross-platform).
La croix-plate-forme de version:
Le moins maladroit, mais Unix uniquement, version:
Je suppose que je veux modifier le fichier de façon permanente, par opposition à la filtrer. Votre code de filtres, mais il est un moyen par exemple d'ouvrir le fichier et seulement de supprimer les ^M et de la fermer donc en permanence à la modifier? Pour l'exemple ci-dessus, une fois que j'ai imprimer les lignes, je vois les retours à la ligne. Pas sûr de ce que je disparues. Je veux dire que je peux toujours ouvrir le fichier en rU et créer un nouveau fichier et ajouter des lignes à la création de 1 ligne 2 lignes dans l'original. Merci beaucoup.
Je ne suis pas sûr que je comprends de votre suivi, mais je vais essayer de mettre à jour la réponse.
J'obtiens l'erreur suivante lorsque j'exécute la version de python de votre solution: ValueError: universel newline mode ne peut être utilisé avec les modes commençant par "r". Savez-vous pourquoi?
OriginalL'auteur abarnert