Python标准库_csv


简介

所谓的csv(逗号分隔值Comma Separated Values)格式是最通用的用于电子表格和数据库的导入和导出格式。因为没有“csv标准”,所以格式被读写它的许多应用程序自由定义。缺乏标准也意味着不同应用程序在产生和使用数据时总是存在一些微小的差异。这些差异使得处理来自多种源的CSV文件时令人头疼。同时,分隔符和引用符的多样性,使得所有格式足够相近以至于编写一个能够有效操作这种数据,对程序员隐藏读写数据细节的独立模块成为可能。

《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版]

《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码]

Python脚本获取Linux系统信息

在Ubuntu下用Python搭建桌面算法交易研究环境

函数

读文件

可以使用reader()创建一个对象从csv文件读取数据。这个阅读器可以用作一个迭代器,按顺序处理文件的行。

 

$ cat s_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

 

$ cat read_csv.py

import csv

import 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.py

import 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.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

 

$ 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\ndef','15', '1']

['1', '90', '20', '140', '15', '1']

 

由解析器返回时,输入中带换行符的字段仍保留内部换行符。

 

阅读器对象

$ cat s_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 attributes.py

import csv

 

with open('s_player_school_table.csv','r')as f:

csv_file=csv.reader(f)

for i in csv_file:

print csv_file.dialect

print i

print 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\ndef', '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']

更多详情见请继续阅读下一页的精彩内容:

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容

    暂无相关文章