注意,本文是 Python3
空行问题
Python 3 中如果要防止空行,需要在open的时候加上 newline="" 这个参数,示例代码如下:
# Python 2
with open('/pythonwork/thefile_subset11.csv', 'wb') as outfile:
writer = csv.writer(outfile)
# Python 3
with open('/pythonwork/thefile_subset11.csv', 'w', newline='') as outfile:
writer = csv.writer(outfile)
乱码问题
Windows系统打开文件的时候需要读取文件的前几个字符来确认编码,如果没找到那么就是乱码(我也很无奈)
好在,如果我们在Windows下面生成文件,它会自动加上这个确认编码,我们不用出现乱码问题
但是,如果我们使用 Linux/Unix 生成的文件,想要在Windows上面打开并且不乱码,我们就要显试的写入那几个确认编码的字符。
file.write(codecs.BOM_UTF8)
那么那个标志编码到底长什么样呢,这样:
直接看示例代码:
# 先给文件写一个Windows系统用来识别编码的头
with open("a12.csv","wb") as datacsv:
datacsv.write(codecs.BOM_UTF8)
# 使用`append`模式打开文件,继续写入
with open("a12.csv","a") as datacsv:
# 定义一个 csv writer
csvwriter = csv.writer(datacsv, dialect='excel')
# 写入一行
csvwriter.writerow(["A", "B"])
结论
Windows真是蛋疼
本文介绍了使用Python处理CSV文件时遇到的两个常见问题:如何避免空行和解决乱码问题。对于空行问题,文章提供了在Python 3中通过设置newline参数的方法;针对乱码问题,则介绍了如何为文件添加UTF-8 BOM来确保跨平台兼容。
1111

被折叠的 条评论
为什么被折叠?



