解决Python2.7读写文件中的中文乱码问题

作者:haha_point 时间:2023-05-16 11:23:51 

Python2.7对于中文编码的问题处理的并不好,这几天在爬数据的时候经常会遇到中文的编码问题。但是本人对编码原理不了解,也没时间深究其中的原理。在此仅从应用的角度做一下总结,

1.设置默认编码

在Python代码中的任何地方出现中文,编译时都会报错,这时可以在代码的首行添加相应说明,明确utf-8编码格式,可以解决一般情况下的中文报错。当然,编程中遇到具体问题还需具体分析啦。


#encoding:utf-8
或者
# -*- coding: utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf8') # 设置默认编码格式为'utf-8'

2.文件读写

文件读写中遇到中文,通常不会报错,但是最后运行结果显示乱码,给后续处理带来不便。

2.1 读文件

读文件时,如果文件路径、文件名中有中文,需要使用unicode函数将其编码为'utf-8'格式,然后再进行正常的文件读取。以我常用的pandas的read_csv函数为例,使用如下代码可以成功地读取名为“POI总表”的csv文件,保存在DataFrame数据类型的poi_list。


import pandas as pd
inpath = 'C:\\POI总表.csv'
**path = unicode(inpath, 'utf-8')**
poi_list = pd.read_csv(path)

2.2 写文件

文件名有中文,文件名乱码

当想要将程序运行结果保存到文本文件时,文本文件的命名中如果有中文,不做处理文件名会出现乱码。利用unicode函数进行编码可解。unicode(‘中文.csv','utf-8')

文件内容有中文,excel打开内容乱码

如果将包含中文的结果输出到csv文件,一般默认使用Excel打开文件时,文件内容会出现乱码,而使用文本编辑器打开不会乱码。这是因为Excel默认的编码方式为‘GBK‘,而文本编辑器默认的格式为‘utf-8'。使用codecs包在创建文件后添加语句f.write(codecs.BOM_UTF8)可解


name='语文'
f = open(name+'.csv','w')
f.write('123,语文')
f.close()
#修改编码
import codecs
f = open(**unicode(name+'.csv','utf-8')**,'w') # 文件名不乱码
**f.write(codecs.BOM_UTF8) # excel打开内容不乱码的核心语句**
f.write('123,语文')
f.close()

输出结果:


#文件名:璇枃.csv
#Excel打开  123 璇枃
#文本编辑器打开 123,语文
#改编码后
#文件名:语文.csv
#Excel打开  123 语文
#文本编辑器打开 123,语文

来源:https://blog.csdn.net/haha_point/article/details/77948830

标签:python2.7,读写,文件,中文,乱码
0
投稿

猜你喜欢

  • Python运算符优先级详细整理

    2021-12-17 06:38:14
  • python检测远程端口是否打开的方法

    2022-01-28 01:45:19
  • 请给PNG8一个机会:对png8的误解

    2009-09-21 10:45:00
  • Python多线程、异步+多进程爬虫实现代码

    2023-07-29 03:28:42
  • MySQL优化之数据表的处理

    2008-12-22 14:45:00
  • python sys,os,time模块的使用(包括时间格式的各种转换)

    2021-02-08 02:31:33
  • 百度在线手写输入法

    2010-02-03 14:27:00
  • python函数运行内存时间等性能检测工具

    2021-04-08 02:24:00
  • Python使用20行代码实现微信聊天机器人

    2023-12-04 12:52:06
  • Vue+Element+Springboot图片上传的实现示例

    2024-06-07 15:19:39
  • asp使用正则自动解析图片地址并保存

    2007-08-17 11:29:00
  • Hello! 404

    2010-09-06 13:37:00
  • 将django项目部署到centos的踩坑实战

    2021-05-14 06:00:22
  • Mysql中Insert into xxx on duplicate key update问题

    2024-01-23 22:32:36
  • git rebase 成功之后撤销的操作方法

    2022-08-27 17:39:47
  • Access与Flash的结合应用

    2008-11-20 16:44:00
  • 分享python 写 csv 文件的两种方法

    2023-04-07 07:03:47
  • Python+OpenCV实战之利用 K-Means 聚类进行色彩量化

    2021-01-02 09:20:27
  • asp 过滤非法字符函数

    2011-04-07 10:39:00
  • Python实现模拟锟斤拷等各类乱码详解

    2022-08-23 04:31:22
  • asp之家 网络编程 m.aspxhome.com