这个问题来自于一个小伙伴,他在处理中文数据时需要先把里面的文本过滤然后分词,因为里面有许多符号,不仅是中文标点符号,还有✳,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文件时的编码问题相关推荐

  1. python读txt很大_Python读写txt文件

    python读写txt文件 准备原始txt数据 3.14159265358979323846264338327950288419716939937510582097494459230781640628 ...

  2. python读压缩文件内容_Python读写压缩文件的方法

    问题 你想读写一个gzip或bz2格式的压缩文件. 解决方案 gzip 和bz2模块可以很容易的处理这些文件. 两个模块都为 open()函数提供了另外的实现来解决这个问题. 比如,为了以文本形式读取 ...

  3. pythontxt文件操作_Python读写txt文本文件的操作方法全解析

    一.文件的打开和创建 ? 1 2 3 4 5 >>> f= open('/tmp/test.txt') >>> f.read() 'hello python!\nh ...

  4. python读取docx文件出错_Python读写docx文件的方法

    这篇文章主要介绍了关于Python读写docx文件的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 Python读写word文档有现成的库可以处理.我这里采用 python-doc ...

  5. python写入excel公式有哪些库_Python读写Excel文件第三方库汇总,你想要的都在这儿!...

    常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...

  6. python与excel常用的第三方库_Python读写Excel文件第三方库汇总

    常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...

  7. python不同数据的读入_python读写不同编码txt文件_python读写txt文件

    python读写不同编码txt文件_python读写txt文件 以后整理规范 [python] view plaincopy import os import codecs filenames=os. ...

  8. python打开文件写文件乱码_Python读写文件乱码问题

    对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...

  9. python txt文件 报文分析_Python读写txt文本文件的操作方法全解析

    一.文件的打开和创建 >>> f = open('/tmp/test.txt') >>> f.read() 'hello python!\nhello world! ...

最新文章

  1. linux c 之sigsuspend 进程阻塞
  2. RxJava学习资源整合
  3. 约瑟夫环 猴子选大王的问题
  4. 即时通讯 IM 开发指南 1:如何进行技术选型
  5. debian安装搜狗
  6. CentOS 下安装xdebug
  7. OpenCV学习(27) 直方图(4)
  8. 使用RegistryKey的一个注意点
  9. ADO.NET数据访问方式:SqlDataReader
  10. \t\tASE产生排名除使用identity外另外的方式(转载)
  11. 利用日志备份恢复时,提示 该 LSN 太晚,无法应用到数据库
  12. html5 mp4在线播放器,HTML5 Web播放器-Video.js
  13. 基础的重要性(程序员之路)
  14. 安全帽检测/人脸识别系统国标GB28181协议云服务EasyGBS搭建智慧工地 助力智慧建筑生态圈
  15. python怎么过滤标点符号大全_python 过滤标点符号
  16. 流媒体协议(三):FLV协议
  17. 设置密保问题,问题不重复设置
  18. nginx配置https
  19. 《中国历代著名文学家评传》目录
  20. python 运算太慢怎么办_干货|如何入门 Python 爬虫?爬虫原理及过程详解

热门文章

  1. 中职语文与计算机专业教学,中职计算机教案
  2. 重读《C primer plus》(八)
  3. C#挂机锁(禁用任务管理器,禁用windows键和组合键alt+f4等等)
  4. MATLAB 2019 设置自定义字体
  5. 获取位置_原神手游新兵的徽记哪里刷 新兵的徽记获取位置分享
  6. 10_Flink Streaming jobSubmit
  7. java 调用dll_Python调用海康SDK抓取红外图像
  8. 移动应用调试之Inspect远程调试
  9. 后台开发【一大波有用知识】Nginx数据结构剖析
  10. 大白话版 UnityShader学习(3)-透明效果