2016-12-16 2 views
0

Je voudrais enregistrer mes résultats dans mon csv. Mais d'une manière ou d'une autre, il reste vide. Mais si j'écris la même sortie pas dans le csv et seulement print je reçois mes résultats comme je voudrais qu'il ait.résultats regex d'un csv à une sortie csv

import re 
import glob 
import os 
## is the second script for matchParser.py, match the results for Duration in ms digit 
lines = [line.strip() for line in open('output.csv')] 
for result in lines: 

    match = re.search(r'(!?\s.\d[Request completed in\s])', result) 
    if match: print match.group(0) 

mais cette version avec le output_csv ne fonctionne pas, je ne sais pas pourquoi ..

import re 
import glob 
import os 

lines = [line.strip() for line in open('output.csv')] 
for result in lines: 

    match = re.search(r'(!?\s.\d[Request completed in\s])', result) 
    with open('outputREGEX5.csv', "w") as output_csv: 
     if match: output_csv.write(match.group(0)) 

Je reçois aussi l'erreur suivante:

output.write(match.group(0)) 
AttributeError: 'NoneType' object has no attribute 'group' 

suis reconnaissant pour toute aide.

- EDIT Mon print Sortie:

44 
37 
53 
35 
17 
35 
25 
27 
50 
31 
27 
36 
17 
66 
46 
41 
38 
23 
33 

Répondre

4
open('outputREGEX5.csv', "w") 

vide le fichier. Ouvrez uniquement le fichier une fois en dehors de la boucle, au lieu de l'ouvrir à chaque itération.

with open('outputREGEX5.csv', "w") as output_csv: 
    for result in lines: 
     match = re.search(r'(!?\s.\d[Request completed in\s])', result) 
     if match: output_csv.write(match.group(0) + '\n') 
+0

Pouvez-vous s'il vous plaît expliquer un peu plus précisément et dire exactement où je devrais le placer? Je suis un débutant en python –

+0

@harun a édité la réponse. –

+0

Presque ... la ligne 'match = ...' devrait être avant le 'if match:', et au même niveau de retrait. – glibdud