2017-09-13 71 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