import csv
1. 多余的空行
原因
python正常写入文件的时候,每行的结束默认添加’\n’,即0x0D,而writerow命令的结束会再增加一个0x0D0A,因此对于windows系统来说,就是两行。采用’ b’参数,用二进制进行文件写入,系统默认是不添加0x0D的(故python2.x中的解决方式是使用“wb模式打开文件”,该方法python3.x中已不适用,会报错如下)。
TypeError: a bytes-like object is required, not 'str'
解决方法
打开待写入文件时添加newline=“”。例如。
with open(filename,"w",encoding="utf-8",newline="") as csvfile:
writer = csv.writer(csvfile)
writer.writerows(csv_list)
2. BOM对读写的影响
(1)什么是BOM
BOM(byte-order mark,字节顺序标记):
Unix系统中都是使用的utf-8编码,所以在Mac用open打开utf-8编码的csv文件并不用加encoding=“utf-8”。
with open(filename) as csvfile:
reader = csv.reader(csvfile)
content = [row for row in reader]
Windows系统的中文环境很多软件默认字符编码为gbk,比如如果用上面的语句打开csv文件则会报错。
'gbk' codec can't decode byte
这种情况可以指定编码为“gbk”来读取:
with open(filename