python 写csv

在进行统计工作时,常用Python写入CSV文件代替Excel,但超过15位的数字会被Excel自动转为0。解决方案是在写入前将数字转换为字符串,并在前后加上单引号。同时,为确保与Windows兼容不出现乱码,需在文件开头添加BOM字符xEFxBBxBF。Python的csv模块提供了便利的按行或按字典写入CSV文件的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做统计的时候,经常会用到excel表格,这个可以用写入csv文件来完成

但这个有一些缺陷:数字在大于15位之后,后面的数字在excel打开时,会被自动转换为0

解决方法是:在写入前将数字转换为字符串,即在前后加上单引号,如:'873583789578397439847'

还有要注意的是,为了与windows兼容,不乱码,写入前,应该写入这几个字符: \xEF\xBB\xBF 


在python中,有一个模块叫做csv,可以很方便的写csv文件,可以按行写,也可以传入一个字典写


1,按行写

#! /usr/bin/python
#-*- coding:utf-8 -*-
#Filename: writecsv.py
#Author: xiaobing
#E-mail: xiaobingzhang29@gmail.com
#Date: 2013-11-02
#Description: 

import csv

def getSortedValues(row):
    sortedValues = []
    keys = row.keys()
    keys.sort()
    for key in keys:
        sortedValues.append(row[key])
    
    return sortedValues

rows = [{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'}]

fieldnames = {'Column1':'栏目1', 'Column2':'栏目2', 'Column3':'栏目3', 'Column4':'栏目4'}
csvFile = '/home/xiaobing/workspace/python/test/csvFile.csv'
fileobj = open(csvFile, 'wb')
#先写入几个字符,防止windows乱码
fileobj.write('\xEF\xBB\xBF')
writer = csv.writer(fileobj)

#先写入头信息
sortedValues = getSortedValues(fieldnames)
writer.writerow(sortedValues)

#将数据逐行写入
for row in rows:
    sortedValues = getSortedValues(row)
    writer.writerow(sortedValues) 

2.字典写入

#! /usr/bin/python
#-*- coding:utf-8 -*-
#Filename: writecsv.py
#Author: xiaobing
#E-mail: xiaobingzhang29@gmail.com
#Date: 2013-11-02
#Description: 

import csv

rows = [{'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'},
        {'Column1': '0', 'Column2': '1', 'Column3': '2', 'Column4': '3'}]

fieldnames = {'Column1':'栏目1', 'Column2':'栏目2', 'Column3':'栏目3', 'Column4':'栏目4'}
csvFile = '/home/xiaobing/workspace/python/test/csvFile.csv'
fileobj = open(csvFile, 'wb')
#先写入几个字符,防止windows乱码
fileobj.write('\xEF\xBB\xBF')
dict_writer = csv.DictWriter(fileobj,fieldnames = fieldnames.keys())

#将头信息加入第一行
rows.insert(0, fieldnames)
#多行写入
dict_writer.writerows(rows)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值