Python3 CSV 读取器值错误
我在查找关于Python处理CSV文件的问题时,发现没有找到能解决我遇到的读取错误的内容。
我有一个包含6列的CSV文件,想要访问其中的两列:
import csv
with open('/home/conjugater/Downloads/aapl.csv', newline='') as csvfile:
dialect=csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
reader=csv.reader(csvfile, dialect)
for row in reader:
for Date, Open, High, Low, Close, Volume in row:
print(Date, Close)
我还没写完代码,这还是我第一次使用CSV模块,我只是想熟悉一下这个模块(我对Python还比较陌生)。
Traceback (most recent call last):
File "reader.py", line 8, in <module>
for Date, Open, High, Low, Close, Volume in row:
ValueError: need more than 5 values to unpack
我可以通过以下方式获取我想要的列:
for row in reader:
print(row[0], row[4])
但我知道在Python中也可以给每一列命名;如果有人能帮忙就太好了。
3 个回答
1
你为什么要把 newline=''
这样设置呢?这会告诉 open()
把每个空字符串都当作一行的结束。试试这样: newline='\n'
。或者可以不传 newline
参数。
Vor 下面的评论也很有用。想了解更多信息,可以查看 open 的文档。
1
你已经很接近了,但你需要使用
with open('/home/conjugater/Downloads/aapl.csv', newline='') as csvfile:
dialect=csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
reader=csv.DictReader(csvfile, dialect, fieldnames = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume'])
for row in reader:
for Date, Open, High, Low, Close, Volume in row:
print("{}: {}".format(Date, Close))
希望这能帮到你……
3
你这里用了两个循环,其实只需要一个就够了:
for (Date, Open, High, Low, Close, Volume) in reader:
print(Date, Close)