python能打开的txt文件编码_Python读写txt文件时的编码问题
这个问题来自于一个小伙伴,他在处理中文数据时需要先把里面的文本过滤然后分词,因为里面有许多符号,不仅是中文标点符号,还有✳,emoji等奇怪的符号。
正常情况下,中文的str经过encode('utf-8')变成bytes,然后bytes经过decode('utf-8')变回中文。
原始文件是txt,那么先读进来,需要使用utf-8编码,当然你也可以使用GBK或者GB18030,这就看你的文本里面都是些啥内容了,读入的格式对后面保存的格式有重大影响,所以还是使用UTF-8吧:
1 with open ('a.txt', 'r', encoding='utf-8') as f:2 lines = f.readlines()
接下来是一系列的操作,过滤分词等等,然后在将结果写入txt的时候问题来了:经过处理的一行行文本现在已经变成了str(其实里面的内容还是这种b'\xe4\xb8\xad\xe6\x96\x87'),不能直接由字符串直接decode到中文,会报错:str has no attribute 'decode'....这是因为中间的那些操作已经把lines里面的bytes转成了str。所以写入的时候需要做转化:
1 item.encode('utf-8').decode('utf-8')
这种做法我在其他博客里都没有见到过,主要是被逼无奈,不然str格式直接写入就是一堆编码,不能阅读。原理是把原本不能直接decode的str(虽然内容是一堆编码)先转换回bytes,再decode成str。
这样就结束了吗?NO!
写入之前需要打开文件,大部分人打开的时候都忘记使用UTF-8编码,而windows下txt默认的是GBK编码,pycharm默认也是使用系统的编码,上面要是直接写入的话就会报错:
UnicodeEncodeError: 'gbk' codec can't encode character '\u2022' in position 0: illegal multibyte sequence
即对GBK格式txt文件写不进去UTF-8下的部分文本,所以写入前的打开文件和上面一样:
1 with open ('a.txt', 'w', encoding='utf-8') as f:2 f.write(item)
编码问题虽然网上的博客很多,但这个问题还是要自己遇到了在解决的过程中才能理解。
python能打开的txt文件编码_Python读写txt文件时的编码问题相关推荐
- python读txt很大_Python读写txt文件
python读写txt文件 准备原始txt数据 3.14159265358979323846264338327950288419716939937510582097494459230781640628 ...
- python读压缩文件内容_Python读写压缩文件的方法
问题 你想读写一个gzip或bz2格式的压缩文件. 解决方案 gzip 和bz2模块可以很容易的处理这些文件. 两个模块都为 open()函数提供了另外的实现来解决这个问题. 比如,为了以文本形式读取 ...
- pythontxt文件操作_Python读写txt文本文件的操作方法全解析
一.文件的打开和创建 ? 1 2 3 4 5 >>> f= open('/tmp/test.txt') >>> f.read() 'hello python!\nh ...
- python读取docx文件出错_Python读写docx文件的方法
这篇文章主要介绍了关于Python读写docx文件的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Python读写word文档有现成的库可以处理.我这里采用 python-doc ...
- python写入excel公式有哪些库_Python读写Excel文件第三方库汇总,你想要的都在这儿!...
常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...
- python与excel常用的第三方库_Python读写Excel文件第三方库汇总
常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...
- python不同数据的读入_python读写不同编码txt文件_python读写txt文件
python读写不同编码txt文件_python读写txt文件 以后整理规范 [python] view plaincopy import os import codecs filenames=os. ...
- python打开文件写文件乱码_Python读写文件乱码问题
对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...
- python txt文件 报文分析_Python读写txt文本文件的操作方法全解析
一.文件的打开和创建 >>> f = open('/tmp/test.txt') >>> f.read() 'hello python!\nhello world! ...
最新文章
- linux c 之sigsuspend 进程阻塞
- RxJava学习资源整合
- 约瑟夫环 猴子选大王的问题
- 即时通讯 IM 开发指南 1:如何进行技术选型
- debian安装搜狗
- CentOS 下安装xdebug
- OpenCV学习(27) 直方图(4)
- 使用RegistryKey的一个注意点
- ADO.NET数据访问方式:SqlDataReader
- \t\tASE产生排名除使用identity外另外的方式(转载)
- 利用日志备份恢复时,提示 该 LSN 太晚,无法应用到数据库
- html5 mp4在线播放器,HTML5 Web播放器-Video.js
- 基础的重要性(程序员之路)
- 安全帽检测/人脸识别系统国标GB28181协议云服务EasyGBS搭建智慧工地 助力智慧建筑生态圈
- python怎么过滤标点符号大全_python 过滤标点符号
- 流媒体协议(三):FLV协议
- 设置密保问题,问题不重复设置
- nginx配置https
- 《中国历代著名文学家评传》目录
- python 运算太慢怎么办_干货|如何入门 Python 爬虫?爬虫原理及过程详解