2017-09-13 2 views
2
Start   End 
MM0001  MM0009 
MM0010  MM0020 
MM0030  MM0039 
MM0059  MM0071 

Bon après-midi, je voulais créer du code en Python en 3.6.2 qui me permettra de chercher essentiellement des espaces dans les rangées de nombres consécutifs, comme par exemple un. Il serait alors sortie à l'écran pour les numéros manquants dans un format similaire à ci-dessous:Analyse d'écart/Rapport pour CSV en Python 3.6.2

MM0021 MM0029 
MM0040 MM0051 
MM0052 MM0058 

J'ai créé un code pour ce programme basé sur une réponse que je trouve ici, mais je ne crois pas que ce soit complète, ainsi que cela se fait en Python 2.7 je crois. Je l'ai cependant utilisé comme base pour ce que j'essayais de faire.

import csv 
with open('thedata.csv') as csvfile: 
    reader = csv.reader (csvfile) 
    for line, row in enumerate(reader, 1): 
    if not row: 
     print 'Start of line', line, 'Contents', row 

Toute aide sera grandement appréciée.

+0

J'aider, mais je ne suis pas sûr de ce que votre csv ressemble. Pourriez-vous poster les premières lignes ou quelque chose? – ddg

+0

1 à 9 est la première ligne, 10-20 est la deuxième, 30-39 est la troisième, 59-71 la quatrième. L'en-tête est simplement Démarrer pour la première ligne, Fin pour la deuxième. Désolé, je ne sais pas comment mettre en retrait comme du code dans la boîte de commentaire! – PythonGroupie

+0

Le CSV est le premier retrait de code dans le sujet, si cela vous facilite la tâche. – PythonGroupie

Répondre

0
import csv 

def out(*args): 
    print('{},{}'.format(*(str(i).rjust(4, "0") for i in args))) 

prev = 0 
data = csv.reader(open('thedata.csv')) 

print(*next(data), sep=', ') # header 

for line in data: 
    start, end = (int(s.strip()[2:]) for s in line) 

    if start != prev+1: 
     out(prev+1, start-1) 

    prev = end 
    out(start, end) 

est vraiment moche désolé, mais devrait fonctionner? si quelque chose ne fonctionne pas

sorties séparées par des virgules texte

, ou que vous voulez qu'il enregistrer dans un fichier, il suffit de commenter

+0

Merci beaucoup pour ça! Il n'y a pas d'erreur, mais le programme lui-même ne démarre pas dans le module 3.6.2. Si vous avez des idées, je suis ouvert à vous entendre! Et encore, merci! – PythonGroupie

+0

http://pythoncentral.io/execute-python-script-file-shell/ – ddg

+0

Maintenant, il dit: Traceback (dernier appel dernier): Fichier "GapReport.py", ligne 14, dans début, fin = (int (c.strip() [2:]) pour c en ligne) Fichier "GapReport.py", ligne 14, en start, end = (int (c.strip() [2:]) pour c en ligne) ValueError: littéral invalide pour int() avec la base 10: 'AC-SEC 000000001' – PythonGroupie