我搜索了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名称;任何帮助非常感谢。
答案 0 :(得分:3)
当你只需要一个for循环时,你有2个循环:
for (Date, Open, High, Low, Close, Volume) in reader:
print(Date, Close)
答案 1 :(得分:1)
为什么要分配newline=''
?这告诉open()
将每个空字符串视为一行的结尾。请尝试这样做:newline='\n'
。或者在不通过newline
的情况下尝试。
以下Vor的评论也很有用。 open
{{1}}了解详情。
答案 2 :(得分: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))
希望有所帮助....