您的位置:首页 > 编程语言 > Python开发

python 读写 csv文件

2014-08-18 16:25 701 查看

1.用python读取csv文件:
csv是逗号分隔符格式 一般我们用的execl生成的格式是xls和xlsx  直接重命名为csv的话会报错:
Error: line contains NULL byte
insun解决方案:出错原因是直接是把后缀为xls的execl文件重命名为csv的 正常的要是另存为csv文件 就不会报错了

譬如我们有这么个csv文件:



 #!/usr/bin/env python# -*- coding:utf-8 -*-
import csvwith open('egg.csv','rb') as f:
reader = csv.reader(f)
for row in reader:
print row

打印出来是这样的list

['a', '1', '1', '1']
['a', '2', '2', '2']
['b', '3', '3', '3']
['b', '4', '4', '4']
['b', '5', '5', '5']
['b', '6', '6', '6']
['c', '7', '7', '7']
['c', '8', '8', '8']
['c', '9', '9', '9']
['c', '10', '10', '10']
['d', '11', '11', '11']
['e', '12', '12', '12']
['e', '13', '13', '13']
['e', '14', '14', '14']

2.用python写入并生成csv

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import csvwith open('egg2.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=' ',
quotechar='|', quoting=csv.QUOTE_MINIMAL)
spamwriter.writerow(['a', '1', '1', '2', '2'])
spamwriter.writerow(['b', '3', '3', '6', '4'])
spamwriter.writerow(['c', '7', '7', '10', '4'])
spamwriter.writerow(['d', '11','11','11', '1'])
spamwriter.writerow(['e', '12','12','14', '3'])



 
这样存进去的是存到一列了 跟我们原本意图存进5列不一样

使用python的csv生成excel所兼容的csv文件的话,主要就是创建writer时的参数时要有dialect=’excel’

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import csvwith open('egg2.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile,dialect='excel')
spamwriter.writerow(['a', '1', '1', '2', '2'])
spamwriter.writerow(['b', '3', '3', '6', '4'])
spamwriter.writerow(['c', '7', '7', '10', '4'])
spamwriter.writerow(['d', '11','11','11', '1'])
spamwriter.writerow(['e', '12','12','14', '3'])



 
这回符合我们要求了。
3.实战: http://zhidao.baidu.com/question/529653801.html?push=1&group=1
想用python处理一下csv格式的数据
想统计a的第一例的最小的数,第二列最小值,第三列最大值,且a有几个
同样得到b,c,d,e等
由 图1 得到 图2(最后一列为啊,a,b,c,d,e的个数)







4.参考:
http://zhidao.baidu.com/question/529653801.html?push=1&group=1 http://docs.python.org/2/library/csv.html
使用Python读取/导出(写入)CSV文件 http://www.crifan.com/python_read_write_csv_file/ http://webcache.googleusercontent.com/search?q=cache:http://appsmth.appspot.com/smth/subject/python/90604 csv模块“line contains NULL byte”错误解决方案 - [python] http://no12.blogbus.com/logs/19102665.html
Python中生成(写入数据到)Excel文件中 http://www.crifan.com/export_data_to_excel_file_in_python/
Python中,添加写入数据到已经存在的Excel的xls文件,即打开excel文件,写入新数据 http://www.crifan.com/python_append_new_data_into_existing_excel_xls_file/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: