首页 文章

使用for循环分割CSV数据并打印一个变量 . ValueError:需要更多的1个值才能解压缩?

提问于
浏览
0

我正在尝试逐行读取CSV数据,在每行中隔离1个数据并将其打印出来 .

CSV样本:

Date,Open,High,Low,Last,Change,Settle,Volume,Prev. Day Open Interest
1969-06-25,22.0,22.0,22.0,,,22.0,3.0,3.0
1969-06-26,23.0,23.0,21.9,,,21.9,6.0,9.0

我的代码:

file1 = 'LNG1970'

infile = open(('%s.csv' % file1), 'r')

for line in infile.readlines():
    (d, o, h, l, la, ch, s, v, o) = line.split(",")
    print(d)

控制台中返回错误:

Traceback(最近一次调用最后一次):文件“”,第1行,文件“C:\ Anaconda3 \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py”,第682行,在runfile execfile中(文件名,命名空间)文件“C:\ Anaconda3 \ lib \ site-packages \ spyderlib \ widgets \ externalshell \ sitecustomize.py”,第85行,在execfile exec中(编译(open(filename,'rb') . read(),filename, 'exec'),namespace)文件“C:/ Users / Nutrade / Desktop / Python / Quandl Hog Project / spreadmaker.py”,第6行,(d,o,h,l,la,ch,s,v, o)= line.split(“,”)ValueError:需要多于1个值才能解包

有人可以解释为什么会发生这种情况以及如何纠正?

2 回答

  • 0

    你的代码运行正常 . 如上所述here,您可能在CSV文件的末尾有一个或多个空行 . (很难从你的问题中看出因为CSV文件格式不正确 . 请参考here获取有关使用Markdown格式化文本的帮助 . )

  • 0

    如果长度不正确,请尝试分配临时和跳过,然后再尝试解压缩 .

    for line in infile.readlines():
        temp = line.split(",")
        if not len(temp) == 9:
            continue
        (d, o, h, l, la, ch, s, v, o) = temp
        print(d)
    

相关问题