Python读写txt文件时的编码问题
转载自: https://www.cnblogs.com/baijing1/p/9885891.html
(授权问题请直接私信)
这个问题来自于一个小伙伴,他在处理中文数据时需要先把里面的文本过滤然后分词,因为里面有许多符号,不仅是中文标点符号,还有✳,emoji等奇怪的符号。
正常情况下,中文的str经过encode(‘utf-8’)变成bytes,然后bytes经过decode(‘utf-8’)变回中文。
原始文件是txt,那么先读进来,需要使用utf-8编码,当然你也可以使用GBK或者GB18030,这就看你的文本里面都是些啥内容了,读入的格式对后面保存的格式有重大影响,所以还是使用UTF-8吧:
with open ('AVE_input.txt', 'r', encoding='utf-8') as f:lines = f.readlines()
接下来是一系列的操作,过滤分词等等,然后在将结果写入txt的时候问题来了:经过处理的一行行文本现在已经变成了str(其实里面的内容还是这种b’\xe4\xb8\xad\xe6\x96\x87’),不能直接由字符串直接decode到中文,会报错:str has no attribute ‘decode’…这是因为中间的那些操作已经把lines里面的bytes转成了str。所以写入的时候需要做转化:
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下的部分文本,所以写入前的打开文件和上面一样:
with open ('a.txt', 'w', encoding='utf-8') as f:f.write(item)
编码问题虽然网上的博客很多,但这个问题还是要自己遇到了在解决的过程中才能理解。
Python读写txt文件时的编码问题相关推荐
- python能打开的txt文件编码_Python读写txt文件时的编码问题
这个问题来自于一个小伙伴,他在处理中文数据时需要先把里面的文本过滤然后分词,因为里面有许多符号,不仅是中文标点符号,还有✳,emoji等奇怪的符号. 正常情况下,中文的str经过encode('utf ...
- python读取txt文件时去除换行符
python读取txt文件时去除换行符 python的readlines()方法用于读取所有行,且返回值是一个列表,换行符包含在字符串中. f = open("temp.txt", ...
- python读txt文件时末尾许多空格-python读取txt文件时去掉空格的方法
python读取txt文件时去掉空格的方法 发布时间:2020-09-22 14:15:44 来源:亿速云 阅读:85 作者:小新 这篇文章给大家分享的是有关python读取txt文件时去掉空格的方法 ...
- python csv文件复制时的编码问题_使用python读取CSV文件时的编码问题
尝试使用python读取CSV文件时遇到障碍. 更新:如果只想跳过字符或错误,可以打开文件,如下所示: with open(os.path.join(directory, file), 'r', en ...
- python创建txt文件并写入 编码-Python文本文件读写操作时的字符编码问题
说明1:文本文件的字符编码问题只存在t模式中,如:open('a.txt', mode='rt') 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须 ...
- python 读写txt文件乱码问题
从报错讲起: UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 2: illegal multibyte seque ...
- python读取txt文件时,报错【utf-8 codec cant decode byte 0xcc】的解决办法
最近在学习正则表达式,想要统计[天龙八部]中各个主角出现的次数. 在读取文件的时候,提示下面错误: 原来下载的天龙八部txt文件的编码格式是[ANSI],所以读取报错了. 解决办法很简单,将文件的编码 ...
- python读写txt 文件
一.读文件 步骤:打开 – 读取 – 关闭 f= open('D:\pythontxt1.txt') f.read() #返回txt 文件的所有内容 while True: lines = f.rea ...
- python读写txt文件,并用jieba库进行中文分词
在虎扑上随便找了一段文字,粘贴到word.txt文件中,然后对这段文字进行处理. 其中用到的matplotlib库,主要是用来绘图:jieba库,对文字进行分词:wordcloud库,构建词云. 一. ...
最新文章
- android java file 清理垃圾获取文件大小 删除文件等操作
- 数据结构实验之链表六:有序链表的建立
- vue中实现美团双级联动菜单
- 阿姆斯特丹大学博士招生,月薪2.3K-3K 欧,QUVA Lab 计算机视觉与机器学习方向...
- C语言中fgetc函数返回值为什么是int?
- ftp ssl java_FTP(四)实现FTP,SSL加密
- matlab绘制不同线性的直方图,Matlab绘制柱状图采用不同图案填充
- 高等数学-空间解析几何与向量代数
- python三引号作用是什么_python中三引号的作用(逗号的两点总结)
- Google Maven Replacer Plugin插件详解
- java bean 转bean_如何用Bull转换任意类型的Java Bean
- (原创)广度优先搜索解决最短路径问题
- 取回Apple TV遥控器的D-Pad
- 进制为2的10次方的世界
- 你知道“晚安”是什么意思么?
- Facade Design
- 网页设计中的灰色调配色技巧
- MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)
- iis安装ssl证书
- php中post是什么意思,php中$_post是什么意思