作者hutdris ()
看板Python
标题[问题] 将csv当函数引数发生问题
时间Wed Mar 23 11:37:11 2016
这边是程式码
http://www.codeskulptor.org/#user41_m3ClsqQPk7wXkna.py
用csv.DictReader()读入一csv後
根据不同的header组合来把资料分类,
假设说原本的csv是
A,B,C,D
1,2,3,4
1,1,3,4
1,2,1,1
想要把它存成dict格式,用('A','B')当key:
{('1','2'):[row1,row3],('1','1'):[row2]}
这就是header_dict(row_index,input_csv)的目标
但是在实际运行时,第一次使用这个函数ok,第二次使用就失败了,
似乎是第一次运行时会更动到原本的site_csv,
但是我并没有在函数里对input_csv作更动阿,
还是说如果每次使用
for row in input_csv:
之後,要把这个csv的计数器归零呢?
自问自答:
是的,如果要重复迭代同一个csv,要在for结束之後使用
data.seek(0),把计数器归0。
参考自:
http://stackoverflow.com/questions/20507228/
python-how-do-i-use-dictreader-twice
短网址:
http://tinyurl.com/zux2ky6
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.114.237.106
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1458704235.A.0EF.html
※ 编辑: hutdris (140.114.237.106), 03/23/2016 12:01:39
1F:推 ihcaoe: 重读档会比较好维护一点 03/24 14:45
2F:推 Yshuan: 写成可以给with包装的物件吧 03/24 19:15
感谢回覆!
所以在这个例子里,直接把csv的档名当作参数,每次执行函式都重读
会是比较好的做法罗?
※ 编辑: hutdris (42.72.97.74), 03/26/2016 01:08:11