2017-09-14 36 views
0

我有这段代码可以让我计算Python 3.6中脚本的csv中缺失的数字行数。然而,这些程序中的以下错误:Python 3中的ValueError代码

错误:

Traceback (most recent call last): 
    File "C:\Users\GapReport.py", line 14, in <module> 
    EndDoc_Padded, EndDoc_Padded = (int(s.strip()[2:]) for s in line) 
    File "C:\Users\GapReport.py", line 14, in <genexpr> 
    EndDoc_Padded, EndDoc_Padded = (int(s.strip()[2:]) for s in line) 
ValueError: invalid literal for int() with base 10: 'AC-SEC 000000001' 

代码:

import csv 

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

prev = 0 
data = csv.reader(open('Padded Numbers_export.csv')) 

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

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

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

prev = end 
    out(start, end) 

我难倒就如何解决这些issues.Also,我觉得CSV其中有很多行,所以如果有一个部分将其限制为几个数字,请随时更新我的​​内容。

CSV片段(很抱歉,如果我没有明确之前!):

CSV Snippet

+0

错误是告诉你,你不能将'AC-SEC 000000001'转换为一个整数。这是有道理的。但是,我们无法看到CSV的示例,因此我们无法帮助解决该问题。 – roganjosh

+0

我最近编辑了一张csv的图片。希望有所帮助。 – PythonGroupie

+0

这只是一个猜测,但是基于这个例子,它看起来像你可能想要''EndDoc_Padded1,EndDoc_Padded2 =(int(s.split()[1])。 – 0x5453

回答

0

你在你的CSV文件具有的值不是数字。例如,FMAC-SEC 000000001不是一个数字。因此,当您运行int(s.strip()[2:])时,它无法将其转换为int

在代码中的一些更多的评论:

  1. 什么是做EndDoc_Padded, EndDoc_Padded = (...)的效用?目前,您正将值分配给两个具有相同名称的变量。要么将其中一个名称命名为其他名称,要么只有一个变量。

  2. 您是否试图从每列中获取两个不同的值?在这种情况下,您需要首先将line分为两部分。你的文件逗号的内容是分开的吗?如果是,则执行for s in line.split(','),否则使用split()中的相应分隔符值。

  3. 您正在循环内部运行此操作,因此每次两个变量的值都会更新为最后一行的值。如果你想获得所有值的2个列表,那么这将不起作用。

+0

谢谢!因为此刻现在被列为语法错误。 – PythonGroupie

+0

我愚蠢,它应该是Control Number_Padded和 EndDoc_Padded。 – PythonGroupie

+0

看到我编辑的答案,并在你的问题进行更正。 – Antimony