python 中文转码 Excel读csv
大家都知道Excel读csv用的是ascii编码,我认为,ascii没有中文,所以这里指的应该是utf-8.
我遇到的问题是这样的,unity项目只能用txt文件,有一堆数据表用txt的文档保存下来了,现在要转回Excel表。我利用Python把txt的内容读出来然后生成csv文件,因为excel能导入csv文件。后来发觉用excel打开的话中文内容会显示乱码。网友的说法是用文本文档打开,然后另存为ascii格式。这种方法我用了,果然有效,不过这个文本编辑器不支持命令行操作,不能完成自动化操作。
我用line = line.decode('gbk')这行代码,报错了。然后尝试line.decode('gbk','ignore'),再line.encode('utf-8','ignore'),发现普通编辑器打开也变成乱码了。
仔细想一想,decode的作用就是把其它编码格式转换为Unicode(utf-16),encode就是从万能的Unicode转成其它格式。我想,先保证文本能正确转成unicode吧,如果decode('gbk')会报错的话,会不会它本来就不是gbk呢。decode('utf-8')不报错,不用加ignore参数。然后我再encode('utf-8'),发现是乱码,我突然间有种预感,Python能正常显示中文的编码,Excel却不能。我试试先输出纯净的gbk,因为之前decode('utf-8')后,得到了纯净且万能的unicode编码,怀着试一试的态度,用excel打开,居然能正常显示中文。我之前的思路一直是把gbk转成utf-8,而事实上是excel能显示gbk,不能显示utf-8中文,我晕了。
最终代码如下:
line = line.decode('utf-8')
line = line.encode('gbk')
python 中文转码 Excel读csv的更多相关文章
- python读写word、excel、csv、json文件
http://blog.csdn.net/pipisorry/article/details/50368044 python读写word文档 (include wps)将word文档转换成txt文档 ...
- python#读csv,excel,json数据
#读csv,excel,json数据 with open('E:\\test\\xdd.csv','r') as f: for line in f.readlines(): print(line) i ...
- Python 处理EXCEL的CSV文档分列求SUM
相对于导出EXCEL文件,PYTHON计算更为实时. import csv import sys from optparse import OptionParser def calculate_pro ...
- Python处理Excel生成CSV文档
Python是一种解释型的.动态数据类型的.面向对象的高级程序设计语言.拥有丰富的处理数据和文本类库,并且得益于它是一种解释型的语言,在程序修改和功能扩展上,可以很容易做到大规模的调整.综合考虑Pyt ...
- Pandas 基础(4) - 读/写 Excel 和 CSV 文件
这一节将分别介绍读/写 Excel 和 CSV 文件的各种方式: - 读入 CSV 文件 首先是准备一个 csv 文件, 这里我用的是 stock_data.csv, 文件我已上传, 大家可以直接下载 ...
- java 读CSV 和 Excel
1.csv和excel读写对比 开发中经常遇到数据导入和导出功能,csv 和 excel是最常见的数据格式,本文比较了下csv和excel读写相同数据的效率: 测试数据格式一 用上面模板数据生成的测试 ...
- python 读csv格式的文件
对于大多数的CSV 格式的数据读写问题,都可以使用csv 库 1. 直接读csv 以下是要操作的csv文件内容 import csv with open(r'C:\Temp\f.csv') as f: ...
- 想在Java中实现Excel和Csv的导出吗?看这就对了
前言 最近在项目中遇到一个需求,需要后端提供一个下载Csv和Excel表格的接口.这个接口接收前端的查询参数,针对这些参数对数据库做查询操作.将查询到的结果生成Excel和Csv文件,再以字节流的形式 ...
- python基础 实战作业 ---Excel基本读写与数据处理
代码地址如下:http://www.demodashi.com/demo/11650.html 看完本篇需要: 10min 作业练习需要: 0.5h~3h(依练习者对python熟悉程度而定) 看完本 ...
随机推荐
- QT5每日一学(五)QT布局管理器
Qt中的布局管理器主要包括 QBoxLayout基本布局管理器 QGridLayout栅格布局管理器 QFormLayout窗体布局管理器 而基本布局管理器又分为QHBoxLayout水平布局管理器和 ...
- 数学 Codeforces Round #308 (Div. 2) B. Vanya and Books
题目传送门 /* 水题:求总数字个数,开long long竟然莫名其妙WA了几次,也没改啥又对了:) */ #include <cstdio> #include <iostream& ...
- 前端css3样式前缀自动补全工具--autoprefixer
最近在学习一份来自git的动画框架源码,看懂70%的核心代码后,打算自己动手实践一版,然鹅,所有框架搭起来以后,在动画这块却出了问题: 想设计一个slideInLeft的动画,必然想到了要从偏移-10 ...
- absolute元素水平居中
原始(未居中): .con{ width:200px; height:200px; background:#ccc; position:relative; } .abs{ width:40px; he ...
- git ---理论知识
理论基础: 不要高估自己的智商,不要低估Git的能耐. 1.Git记录的 是什么? 记录每一次版本变动的内容 将每个版本独立保存 方便分支管理. 2.git的三棵树---工作区.暂存区域和Git仓库 ...
- spring 配置 shiro rememberMe
1.shiro 提供记住我的功能,当将form表单中name="rememberMe" 的value设为true或者登陆的token中.token.setRememberMe(tr ...
- dll、lib(动态链接库、静态链接库)的区别
1.dll:dynamic link library: lib:static link library. 2.windows系统中,许多app并不是仅由一个完整的exe构成,而是按功能分成了若干部分, ...
- list map接口传递
1.传参时可以设置为jsonArray的格式 JSONArray array = new JSONArray(); JSONObject json = new JSONObject(); json.p ...
- classpath 路径和classpath*的区别
classpath和classpath*区别: classpath:只会到你的class路径中查找找文件. classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找 ...
- vue动态设置页面title方法
第一种方法 npm install vue-wechat-title --save 在mian.js中引入 //设置title import VueWechatTitle from 'vue-wech ...