使用Python3生成CSV文件遇到的问题(空行/乱码)

注意,本文是 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)

那么那个标志编码到底长什么样呢,这样:
codecs
直接看示例代码:


# 先给文件写一个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真是蛋疼

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值