Python 3 cod中的ValueError

2024-09-28 22:19:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这段代码,它允许我计算在python3.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


Tags: csv代码infordata错误line数字
1条回答
网友
1楼 · 发布于 2024-09-28 22:19:48

CSV文件中的值不是数字。你知道吗

例如,FMAC-SEC 000000001不是一个数字。因此,运行int(s.strip()[2:])时,它无法将其转换为int。你知道吗

关于代码的更多注释:

  1. EndDoc_Padded, EndDoc_Padded = (...)的效用是什么?当前,您正在为两个同名变量赋值。要么给其中一个起个名字,要么就在那里有一个变量。

  2. 你想从每一列得到两个不同的值吗?在这种情况下,您需要首先将line分成两部分。文件的内容是否用逗号分隔?如果是,则执行for s in line.split(','),否则在split()中使用适当的分隔符值。

  3. 您在一个循环中运行它,因此每次这两个变量的值都会更新为最后一行的值。如果您试图获取2个包含所有值的列表,那么这将不起作用。

相关问题 更多 >