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

下午好,我想在3.6.2中創建Python代碼,這將允許我在連續數字行中實際查找空位,例如使用此一。然後,它將輸出到屏幕上的丟失號碼的格式類似如下:Python 3.6.2中針對CSV的差距分析/報告

MM0021 MM0029 
MM0040 MM0051 
MM0052 MM0058 

我已經創建了基於一個答案,我在這裏找到解決這個程序的一些代碼,但我不相信這是完整的,以及它在Python 2.7中完成我相信。然而,我用它作爲我正在嘗試做的事情的基礎。

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 

任何幫助將不勝感激。

+0

我會幫助,但我不知道您的CSV是什麼樣子。你可以發表第一對夫婦或其他什麼? – ddg

+0

1到9是第一行,10-20是第二,30-39是第三,59-71是第四。標題只是第一行的開始,第二行的結尾。對不起,不知道如何在評論框中縮進代碼! – PythonGroupie

+0

CSV是第一個縮進主題的代碼,如果這樣可以讓你更容易。 – PythonGroupie

回答

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) 

這真的很醜很抱歉,但應該工作?

輸出逗號分隔文本

,如果事情不工作,或者你想讓它保存到一個文件,只是發表評論

+0

非常感謝您的支持!它沒有任何錯誤,但程序本身也不是在3.6.2模塊中啓動的。如果您有任何想法,我很樂意聽取您的意見!再一次,謝謝你! – PythonGroupie

+0

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

+0

現在它說:Traceback(最近呼叫最後): 文件「GapReport.py」,第14行,在 start,end = (int(c.strip()[2:])for line in) 文件「GapReport.py」,第14行,在 start,end =(int(c.strip()[2:])for c in line) ValueError:無效文字爲int()以10爲底:'AC-SEC 000000001' – PythonGroupie