import csv
DATA=((10, 'Record 1', 'hi'),
(20, 'Record 2', 'bye'),
(30, 'Record 3', 'test'))
f=open('bookdata.csv', 'w')
writer=csv.writer(f)
writer=csv.writer(f,delimiter='\t',quotechar='"',quoting=csv.QUOTE_ALL)
for record in DATA:
writer.writerow(record)
f.close()
f=open('bookdata.csv', 'r')
reader=csv.reader(f)
for chap, title, pack in reader:
print("%s, %s, %s" % (chap, title, pack))
f.close()
它看起来对我来说,但它说 " ValueError:需要多于0个值才能解包"
它确实阅读了第一行,它是在阅读了它崩溃之后...
任何帮助将不胜感激
答案 0 :(得分:1)
CSV的默认分隔符是逗号,但您正在使用制表符。由于您没有告诉读者使用制表符,因此在阅读字段时会使用逗号。
由于您的CSV文件中没有逗号;线条没有分开;并且reader
上的每个循环都返回一个只包含一个字符串的列表:
['10\t"Record 1"\t"hi"']
['20\t"Record 2"\t"bye"']
['30\t"Record 3"\t"test"']
因此,当您尝试解压缩时,您会收到错误。
要解决此问题,请告诉读者您使用的分隔符:
reader=csv.reader(f, delimiter="\t")
您还应该使用with statement
,它会自动为您关闭文件,并writerows
一次性写出所有项目:
import csv
DATA=((10, 'Record 1', 'hi'),
(20, 'Record 2', 'bye'),
(30, 'Record 3', 'test'))
with open('bookdata.csv', 'w') as f:
# writer=csv.writer(f) - this line is not required
writer=csv.writer(f,delimiter='\t',quotechar='"',quoting=csv.QUOTE_ALL)
writer.writerows(DATA) # note here I am using writerows
with open('bookdata.csv', 'r') as f:
reader=csv.reader(f, delimiter="\t")
for chap, title, pack in reader:
print("%s, %s, %s" % (chap, title, pack))
答案 1 :(得分:0)
工作代码
import csv
DATA= [[10, 'Record 1', 'hi'],
[20, 'Record 2', 'bye'],
[30, 'Record 3', 'test'] ]
f=open('bookdata.csv', 'w')
writer=csv.writer(f,delimiter=',',quotechar='"',quoting=csv.QUOTE_MINIMAL)
for record in DATA:
writer.writerow(record)
f.close()
f=open('bookdata.csv', 'r')
reader=csv.reader(f)
for chap, title, pack in reader:
print("%s, %s, %s" % (chap, title, pack))
f.close()