我有这段代码,可以让我计算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片段(很抱歉,如果之前我不清楚的话!):
答案 0 :(得分:0)
CSV文件中的值不是数字。
例如,FMAC-SEC 000000001
不是数字。因此,当您运行int(s.strip()[2:])
时,无法将其转换为int
。
关于代码的更多评论:
执行EndDoc_Padded, EndDoc_Padded = (...)
有什么用处?目前,您正在为具有相同名称的两个变量分配值。要么将其中一个命名为别的,要么在那里只有一个变量。
您是否尝试从每列中获取两个不同的值?在这种情况下,您需要先将line
拆分为两个。文件内容是否以逗号分隔?如果是,请执行for s in line.split(',')
,否则请使用split()
中的相应分隔符值。
您在循环内运行此操作,因此每次将两个变量的值更新为最后一行的值。如果您尝试获取所有值的2个列表,那么这将不起作用。