本文共 1258 字,大约阅读时间需要 4 分钟。
写入时的乱码
当使用csv.writer将包含中文的数据写入文件时,可能会出现乱码现象。这种情况通常是由于Python2内部使用的str类型和unicode类型的编码方式与Windows系统的默认编码gb2312不兼容所致。读取时的乱码
当打开CSV文件时,读取到的中文字符可能会呈现乱码状态。这同样是由于编码方式的不兼容所导致的。写入时的解决方法
在写入文件之前,将字符串先转换为utf-8编码,再将其转换为目标编码(如gbk)进行写入。读取时的解决方法
反之,当读取文件时,需要先将文件的编码方式(如gbk)转换为utf-8,然后再进行处理。手动编码转换(不推荐)
这种方法虽然可行,但操作繁琐,且容易出错。具体步骤如下:# coding:utf-8import csvf = open("xieru1.csv", 'wb')writer = csv.writer(f)data = ["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"]for i in data: writer.writerow(i.decode("utf-8").encode("gbk"))f.close()使用codecs库(推荐)
codecs库提供了一种更简单的方式来处理文件的编码转换。具体实现如下:# coding:utf-8import csvimport codecsimport sysreload(sys)sys.setdefaultencoding('utf8')f = codecs.open("xx.csv", 'wb', "gbk")writer = csv.writer(f)writer.writerow(["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"])writer.writerows([["客户名称", "行业类型", "客户联系人", "职位", "联系方式", "邮箱","地址"], ...])f.close()通过上述方法,可以有效避免CSV文件中的中文乱码问题。当然,选择第二种方法会更加高效和简洁。
转载地址:http://rbmbz.baihongyu.com/