Python2写CSV无法MS Excel打开乱码
来源:互联网 发布:小学生必知课外知识 编辑:程序博客网 时间:2024/05/22 10:44
Python2处理汉字一直是个很让人头疼的问题。
首先,要在程序开头加上如下一行,否则汉字变乱码;
#-*- coding: utf-8 -*-
其次,处理汉字字符串时候,有时候需要 str.encode("utf-8") 转码或者先解码再转码 str.decode("GBK").encode("utf-8");
然后,真的要写带汉字的文件了,直接write出来的貌似也不能直接看懂... 需要引入其它包
import codecs# # your functions# ......#fh = codecs.open("yourfile", "w", "utf-8")fh.write(filecontent)fh.close()
最后,奇葩的事情在MS Excel里出现了!
本来很简单一件事,写一个CSV(Comma-Separated Values)文件,用Excel打开。
直接codecs写的文件,用MS Excel打开时候会提示格式不对,任性打开也会是汉字变乱码。但是同一个文件在记事本、Editplus、UltraEdit甚至iOS的Numbers里打开都是正常的。
核心问题是需要先写一个文件头,u"\ufeff"。然后,该怎么办怎么办。
三种解决方法,方法一:还是用codecs
import codecs# # your functions# 先把csv文件内容按照“逗号分隔,换行回车”写好# ......fh = codecs.open("yourfile.csv","w","utf-8")fh.write(u"\ufeff")fh.write(csvstr)fh.close()# Done
方法二:不引用额外包,直接write
# # your functions# 先把csv文件内容按照“逗号分隔,换行回车”写好# ......#fh = open("yourfile.csv", "w")fh.write(u"\ufeff") #某些系统中需要改成 fh.write(u"\ufeff".encode('utf-8'))fh.write(csvstr.encode("utf-8")) #简单粗暴地直接所有都转码。fh.close()
这样处理,不会有问题了。生成的文件MS Excel直接打开,汉字准确无误。
方法三:直接用CSV模块
#coding=utf-8import csvcsvfh = open('test1.csv', 'w')csvfh.write(u"\ufeff".encode("utf-8"))w = csv.writer(csvfh)w.writerow(["编号","用例","结果"])content = [ ('1','试验1','通过'), ('2','试验2','失败')]w.writerows(content)csvfh.close()
1 0
- Python2写CSV无法MS Excel打开乱码
- 下载CSV, MS EXCEL打开乱码解决方案[转载]
- csv文件导出,excel打开乱码处理
- csv文件出力,excel打开乱码处理
- Excel打开CSV文件中文乱码
- Excel打开CSV文件乱码的解决方法
- EXCEL打开CSV文件乱码的解决方法
- excel打开csv 出现乱码怎么解决
- csv文件用excel打开乱码
- CSV文件excel打开乱码问题
- excel打开csv 出现乱码怎么解决
- excel打开csv文件乱码问题
- csv用excel打开中文乱码
- Excel打开csv文件中文乱码解决方法
- CSV文件在EXCEL中打开时乱码解决办法
- 导出CSV格式文件,用Excel打开乱码的解决办法
- 导出CSV格式文件,用Excel打开乱码的解决办法
- Excel打开csv文件乱码问题的解决办法
- mybatis配置文件总结
- golden-gate extract sequence 归零
- 解决画原理图封装时place---polyline不能画三角形的问题
- nodejs基础学习--模块安装
- 虚拟继承图示
- Python2写CSV无法MS Excel打开乱码
- NZT充值
- 从RCNN到SSD发生了什么
- BZOJ 2084 [Poi2010]Antisymmetry Manacher
- 处理本地JSON文件,将data数据转换成NSDictionary
- 递归案例3:拷贝一个文件夹中(包含内容)到另一个文件夹中
- iOS Base64简单使用
- 拷贝构造函数深探
- SpringMVC上传文件的三种方式