2017-09-14 5 views
0

Mon LogFile ressemble à ceci parce que je accidentellement ajouté une chaîne qui se compose de \r\n\r\n au script log (Arduino Ajouter à ThingSpeak):Supprimer r n r n de csv fichier

created_at,entry_id,field1,field2 
"2017-09-10 09:21:43 UTC,18,23.10,""48.70" 

" 
2017-09-10 10:20:35 UTC,19,23.10,48.30" 

" 

il se doit ressemblent à ceci:

created_at,entry_id,field1,field2 
2017-09-10 09:21:43 UTC,18,23.10,48.70 
2017-09-10 10:20:35 UTC,19,23.10,48.30 

Donc toutes les lignes blanches et les " s dans le fichier journal doivent être supprimés. Quelle est la meilleure façon de convertir le fichier journal dans python 3.x. J'ai essayé quelques approches avec le lecteur csv en python, par exemple en recherchant \r\n\r\n ou \" dans les lignes et les remplacer, mais cela n'a pas fonctionné. Mon principal problème est de définir ce que je cherche qui doit être remplacé. À ma connaissance, cela devrait être tous les " et toutes les lignes vides.

Répondre

1

Notez que DictReader du module csv accepte tout objet supportant le protocole itérateur (plus ou moins). Cela signifie que nous pouvons lire votre fichier journal dans une fonction qui renvoie des lignes à partir de celui-ci, modifiées si nécessaire, en utilisant les instructions yield.

Dans cette fonction, je retourne la première ligne inchangée à l'exception de l'effacement de son (ses) caractère (s) de fin. Lorsque je rencontre une ligne contenant un UTC, je supprime les caractères de guillemets doubles et dépouille les lignes de fin. Les autres lignes sont complètement ignorées. Ce bit de code montre ce que csvfile accomplit.

>>> for thing in csvfile(): 
...  thing 
... 
'created_at,entry_id,field1,field2' 
'2017-09-10 09:21:43 UTC,18,23.10,48.70' 
'2017-09-10 10:20:35 UTC,19,23.10,48.30' 

Maintenant, nous pouvons le mettre à utiliser. La fonction prend la place d'un fichier.

>>> import csv 

>>> reader = csv.DictReader(csvfile()) 
>>> for row in reader: 
...  row 
...  
{'created_at': '2017-09-10 09:21:43 UTC', 'field1': '23.10', 'entry_id': '18', 'field2': '48.70'} 
{'created_at': '2017-09-10 10:20:35 UTC', 'field1': '23.10', 'entry_id': '19', 'field2': '48.30'} 

Vous souhaiterez probablement ajouter du code à décoder la date, etc.