Python 3代码中的ValueError

时间:2017-09-14 19:42:14

标签: python csv

我有这段代码,可以让我计算Python 3.6中脚本的csv中缺少的数字行数。但是,这些是程序中的以下错误:

错误:

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)

我很难解决这些问题。另外,我认为csv中有很多行,所以如果有一个部分将其限制为几个数字,请随时更新我。

CSV片段(很抱歉,如果之前我不清楚的话!):

CSV Snippet

1 个答案:

答案 0 :(得分: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个列表,那么这将不起作用。