Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Python标准库_csv

简介

所谓的csv(逗号分隔值Comma Separated Values)格式是最通用的用于电子表格和数据库的导入和导出格式。因为没有“csv标准”,所以格式被读写它的许多应用程序自由定义。缺乏标准也意味着不同应用程序在产生和使用数据时总是存在一些微小的差异。这些差异使得处理来自多种源的CSV文件时令人头疼。同时,分隔符和引用符的多样性,使得所有格式足够相近以至于编写一个能够有效操作这种数据,对程序员隐藏读写数据细节的独立模块成为可能。《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版] http://www.linuxidc.com/Linux/2013-06/85425.htm《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码] http://www.linuxidc.com/Linux/2013-11/92693.htmPython脚本获取Linux系统信息 http://www.linuxidc.com/Linux/2013-08/88531.htm在Ubuntu下用Python搭建桌面算法交易研究环境 http://www.linuxidc.com/Linux/2013-11/92534.htm

函数

读文件

可以使用reader()创建一个对象从csv文件读取数据。这个阅读器可以用作一个迭代器,按顺序处理文件的行。 $ cat s_player_school_table.csvc_school_id,c_hp_fixed,c_hp_factor,c_mana_fixed,c_mana_factor,c_ap_factor0,150,20,140,15,11,90,20,140,15,12,180,20,151,15,13,229,20,177,15,4.44,208,20,177,15,6.75,208,20,177,15,6.7 $ cat read_csv.pyimport csvimport sys with open(sys.argv[1],"r") as csv_file:csv_reader=csv.reader(csv_file)for row in csv_reader:print row reader()的第一个参数是文本行的源。上例中是一个文件,也可以是任何可迭代的对象(如stringIO实例、list等等)。还可以指定其他可选参数,来控制如何解析输入数据。$ cat read_from_list.pyimport csv csv_file=csv.reader(["hello","signjing","goodnight"])for i in csv_file:print i $ python read_from_list.py["hello"]["signjing"]["good night"] 读文件时,输入数据的每一行都会解析,并转换为一个字符串list。$ python read_csv.pys_player_school_table.csv["c_school_id", "c_hp_fixed","c_hp_factor", "c_mana_fixed", "c_mana_factor", "c_ap_factor"]["0", "150", "20", "140", "15", "1"]["1", "90", "20", "140", "15", "1"]["2", "180", "20", "151", "15", "1"]["3", "229", "20", "177", "15", "4.4"]["4", "208", "20", "177", "15", "6.7"]["5", "208", "20", "177", "15", "6.7"] 这个解析器会处理嵌在字符串中的换行符,正是这个原因,这里的行(row)并不一定等同于文件的一个输入行(line)。 $ cat s_player_school_table.csvc_school_id,c_hp_fixed,c_hp_factor,c_mana_fixed,c_mana_factor,c_ap_factor0,150,20,"abcdef",15,11,90,20,140,15,1 $ python read_csv.pys_player_school_table.csv["c_school_id", "c_hp_fixed","c_hp_factor", "c_mana_fixed", "c_mana_factor", "c_ap_factor"]["0", "150", "20", "abc def","15", "1"]["1", "90", "20", "140", "15", "1"] 由解析器返回时,输入中带换行符的字段仍保留内部换行符。 

阅读器对象

$ cat s_player_school_table.csvc_school_id,c_hp_fixed,c_hp_factor,c_mana_fixed,c_mana_factor,c_ap_factor0,150,20,"abcdef",15,11,90,20,140,15,1 $ cat attributes.pyimport csv with open("s_player_school_table.csv","r")as f:csv_file=csv.reader(f)for i in csv_file:print csv_file.dialectprint iprint csv_file.line_num print with open("s_player_school_table.csv","r")as f:csv_file=csv.DictReader(f)print csv_file.fieldnames $ python attributes.py<_csv.Dialect object at 0xb7c64ac0>["c_school_id", "c_hp_fixed","c_hp_factor", "c_mana_fixed", "c_mana_factor", "c_ap_factor"]1<_csv.Dialect object at 0xb7c64ac0>["0", "150", "20", "abc def", "15", "1"]3<_csv.Dialect object at 0xb7c64ac0>["1", "90", "20", "140", "15", "1"]4 ["c_school_id", "c_hp_fixed","c_hp_factor", "c_mana_fixed", "c_mana_factor", "c_ap_factor"]更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-08/105048p2.htm