python中文乱码总结
来源:互联网 发布:车铣复合手工编程实例 编辑:程序博客网 时间:2024/05/29 03:00
目录
【问题】python中文写入csv文件乱码(情形一)
【问题】python中文写入csv文件乱码(情形二)
【扩展问题1】——将中文列表row正常输出
【扩展问题2】——将\u转换为对应的中文
【问题】python中文写入csv文件乱码(情形一)
# -*- coding: UTF-8 -*-import csvrow = ['课程', '语文', '数学', '英语']file_name = 'course.csv'file_obj = open(file_name, 'wb')writer = csv.writer(file_obj)for row_temp in row: print row_tempprint rowwriter.writerow(row)
输出:
课程语文数学英语['\xe8\xaf\xbe\xe7\xa8\x8b', '\xe8\xaf\xad\xe6\x96\x87', '\xe6\x95\xb0\xe5\xad\xa6', '\xe8\x8b\xb1\xe8\xaf\xad']
csv文件为乱码:
璇剧 璇 板 辫
可以看到:
1. 将列表row写入csv文件时,中文为乱码;
2. 直接打印列表row,也不是中文;
3. 单独打印列表row中的元素,正常显示中文。
【原因】
excel能够正确识别用gb2312、gbk、gb18030或utf_8 with BOM 编码的中文,如果是utf_8 no BOM编码的中文文件,excel打开会乱码。
【解决方法】
修改代码如下:
# -*- coding: UTF-8 -*-import csvimport codecsrow = ['课程', '语文', '数学', '英语']file_name = 'course.csv'file_obj = open(file_name, 'wb')file_obj.write(codecs.BOM_UTF8) # 防止乱码writer = csv.writer(file_obj)for row_temp in row: print row_tempprint rowwriter.writerow(row)
添加的代码为:
import codecsfile_obj.write(codecs.BOM_UTF8) # 防止乱码
输出:
课程语文数学英语['\xe8\xaf\xbe\xe7\xa8\x8b', '\xe8\xaf\xad\xe6\x96\x87', '\xe6\x95\xb0\xe5\xad\xa6', '\xe8\x8b\xb1\xe8\xaf\xad']
csv文件正常显示中文:
课程 语文 数学 英语
【问题】python中文写入csv文件乱码(情形二)
当row = [u'课程', u'语文', u'数学', u'英语']
时,会遇到与上文同样的乱码,解决方法也一样。
u'课程'也可以写成:unicode('课程', 'utf-8')
附上修改后的代码:
# -*- coding: UTF-8 -*-import sysreload(sys)sys.setdefaultencoding('utf-8') # 没有这句会报错import csvimport codecs# row = ['课程', '语文', '数学', '英语']row = [u'课程', u'语文', u'数学', u'英语']file_name = 'test.csv'file_obj = open(file_name, 'wb')file_obj.write(codecs.BOM_UTF8) # 防止乱码writer = csv.writer(file_obj)for row_temp in row: print row_tempprint rowwriter.writerow(row)
输出:
课程语文数学英语[u'\u8bfe\u7a0b', u'\u8bed\u6587', u'\u6570\u5b66', u'\u82f1\u8bed']
csv文件正常显示中文:
课程 语文 数学 英语
【扩展问题1】——将中文列表row正常输出
使用join方法:这种方法的输出结果是一整个字符串。
print ', '.join(row)
输出:
课程, 语文, 数学, 英语
【扩展问题2】——将\u转换为对应的中文
x_str = '\u8bfe\u7a0b'print type(x_str)print x_strprint u'\u8bfe\u7a0b' #方法一print x_str.decode('unicode-escape') #方法二
输出:
<type 'str'>\u8bfe\u7a0b课程课程
阅读全文
0 0
- python中文乱码总结
- python中文乱码总结
- python中文字符编码decode,encode以及乱码解决总结
- python中文字符编码decode,encode以及乱码解决总结
- python中文字符编码decode,encode以及乱码解决总结
- python总结(二):控制台中文乱码的解决办法
- Python mysql 中文乱码
- python中文乱码问题
- Python中文乱码
- python 中文乱码
- python 中文乱码解决
- python中文乱码问题
- python中文乱码问题
- python 中文乱码问题
- Python中文注释乱码
- Python 中文乱码解决方法
- python 中文乱码问题
- Python--中文乱码
- OpenCV距离变换函数:distanceTransform()介绍
- 作业
- 是
- Node 解决跨域问题 JSONP与CORS
- linux 解压war
- python中文乱码总结
- formatNumberStr
- hdu 4372 Count the Buildings(第一类斯特林数)
- 绕过密码直接登录linux系统
- 5.1求三角形面积
- 11.8 dairy
- Java WebSocket构建简易聊天web程序
- 作业
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore