Python输出csv文件的几个注意点

Python操作csv文件(逗号分隔符文件)的功能由其标准库csv提供,可以很轻松地将基本数据结构按行写入csv供Excel或其他专业软件使用。但使用过程中有几个注意点需要注意。

字符编码问题

但Python处理字符串时,默认使用的是UTF8编码,这样做便于多语言环境下,字符的正确表示。但是操作系统,特别是Windows操作系统默认使用的文件编码可能不是UTF8编码,这就导致Python以字符模式打开csv文件时可能遭遇到类似于gbk无法解码……的问题。只需要在open函数中加上encoding='utf8'即可,但值得注意的是Microsoft Excel对于无BOM(字节顺序标记)的UTF8文件,默认不按UTF8编码处理,因此会出现乱码。对于Excel而言,并不是不能处理这样的问题,但将这个问题抛给Excel不是最佳实践。因而导出的csv是供Excel使用的,需要更换encoding为带BOM的UTF8格式或者其他格式,例如encoding='utf_8_sig',就能很好的使csv能优雅地供Excel使用。

数据行与空白行交替出现

这个问题据分析是来自于以字符模式打开csv文件,操作系统会自动将’\n’转换为'\r\n',而本身csv写入时,根据平台特性,写入'\r\n',最终落实到文件上得到'\r\r\n',因而Python 2.x可以以二进制模式打开csv文件,Python 3.x可以在open函数中添加参数newline='',即可。

留下评论