转载自: 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文件时的编码问题相关推荐

  1. python能打开的txt文件编码_Python读写txt文件时的编码问题

    这个问题来自于一个小伙伴,他在处理中文数据时需要先把里面的文本过滤然后分词,因为里面有许多符号,不仅是中文标点符号,还有✳,emoji等奇怪的符号. 正常情况下,中文的str经过encode('utf ...

  2. python读取txt文件时去除换行符

    python读取txt文件时去除换行符 python的readlines()方法用于读取所有行,且返回值是一个列表,换行符包含在字符串中. f = open("temp.txt", ...

  3. python读txt文件时末尾许多空格-python读取txt文件时去掉空格的方法

    python读取txt文件时去掉空格的方法 发布时间:2020-09-22 14:15:44 来源:亿速云 阅读:85 作者:小新 这篇文章给大家分享的是有关python读取txt文件时去掉空格的方法 ...

  4. python csv文件复制时的编码问题_使用python读取CSV文件时的编码问题

    尝试使用python读取CSV文件时遇到障碍. 更新:如果只想跳过字符或错误,可以打开文件,如下所示: with open(os.path.join(directory, file), 'r', en ...

  5. python创建txt文件并写入 编码-Python文本文件读写操作时的字符编码问题

    说明1:文本文件的字符编码问题只存在t模式中,如:open('a.txt', mode='rt') 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须 ...

  6. python 读写txt文件乱码问题

    从报错讲起: UnicodeDecodeError: 'gbk' codec can't decode byte 0xaa in position 2: illegal multibyte seque ...

  7. python读取txt文件时,报错【utf-8 codec cant decode byte 0xcc】的解决办法

    最近在学习正则表达式,想要统计[天龙八部]中各个主角出现的次数. 在读取文件的时候,提示下面错误: 原来下载的天龙八部txt文件的编码格式是[ANSI],所以读取报错了. 解决办法很简单,将文件的编码 ...

  8. python读写txt 文件

    一.读文件 步骤:打开 – 读取 – 关闭 f= open('D:\pythontxt1.txt') f.read() #返回txt 文件的所有内容 while True: lines = f.rea ...

  9. python读写txt文件,并用jieba库进行中文分词

    在虎扑上随便找了一段文字,粘贴到word.txt文件中,然后对这段文字进行处理. 其中用到的matplotlib库,主要是用来绘图:jieba库,对文字进行分词:wordcloud库,构建词云. 一. ...

最新文章

  1. android java file 清理垃圾获取文件大小 删除文件等操作
  2. 数据结构实验之链表六:有序链表的建立
  3. vue中实现美团双级联动菜单
  4. 阿姆斯特丹大学博士招生,月薪2.3K-3K 欧,QUVA Lab 计算机视觉与机器学习方向...
  5. C语言中fgetc函数返回值为什么是int?
  6. ftp ssl java_FTP(四)实现FTP,SSL加密
  7. matlab绘制不同线性的直方图,Matlab绘制柱状图采用不同图案填充
  8. 高等数学-空间解析几何与向量代数
  9. python三引号作用是什么_python中三引号的作用(逗号的两点总结)
  10. Google Maven Replacer Plugin插件详解
  11. java bean 转bean_如何用Bull转换任意类型的Java Bean
  12. (原创)广度优先搜索解决最短路径问题
  13. 取回Apple TV遥控器的D-Pad
  14. 进制为2的10次方的世界
  15. 你知道“晚安”是什么意思么?
  16. Facade Design
  17. 网页设计中的灰色调配色技巧
  18. MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)
  19. iis安装ssl证书
  20. php中post是什么意思,php中$_post是什么意思

热门文章

  1. pygame6 弹球游戏
  2. 国内有哪些液晶屏生产厂家?
  3. 华为服务器 修复raid,服务器重做raid
  4. Java字符串拼接:int和String类型、String和Sting类型
  5. 首次公开,GitHub点击破百万的分布式高可用算法小册被我扒下来了
  6. web自动化测试设置windows计划定时执行脚本
  7. 2022js高频面试题
  8. 标准差 方差 协方差 相关系数
  9. 关于项目经理的一些可能面试题
  10. 全志平台H313 移植BCM4354驱动