当前位置:   article > 正文

python处理多种编码格式的txt文件_python读取txt要用什么编码

python读取txt要用什么编码

问题

一般会出现的问题

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte

UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 2: illegal multibyte sequence

主要原因是:文件夹中的txt文件包含不同种的编码格式。

如何查看txt文件的编码格式:

打开txt文件,选择文件->另存为,下面就可以看到编码格式了,我遇到的情况是txt文件有两种格式UTF-8和ANSI两种格式。

解决方法

具体使用是try except去解决这个问题

  1. try:
  2. 正常的操作
  3. ......................
  4. except:
  5. 发生异常,执行这块代码
  6. ......................

法一

  1. import os
  2. if __name__ == '__main__':
  3. imageDir = "test/"
  4. for imageName in os.listdir(imageDir):
  5. txtPATH = os.path.join(imageDir, imageName)
  6. print("txtPATH \t", txtPATH)
  7. try:
  8. f = open(txtPATH, 'r', encoding='gbk')
  9. lines = f.readlines()
  10. except:
  11. print("enter except")
  12. f = open(txtPATH, 'r', encoding='utf8')
  13. lines = f.readlines()
  14. print(lines)

注意:encoding=gbk解决的是ANSI编码格式的txt文件,utf8解决的是UTF-8编码格式的txt文件

其中f = open(txtPATH, 'r', encoding='gbk')是不会报错的,只有读取f.readlines()的时候才会报错。

法二

  1. import os
  2. if __name__ == '__main__':
  3. imageDir = "test/"
  4. for imageName in os.listdir(imageDir):
  5. txtPATH = os.path.join(imageDir, imageName)
  6. print("txtPATH \t", txtPATH)
  7. f = open(txtPATH, 'rb')
  8. line = f.readlines()[0]
  9. try:
  10. line = line.decode('utf8')
  11. except:
  12. line = line.decode('gbk')
  13. print(line)

法三

知道txt文件的编码格式,然后再进行读取,理论上是可以的。但是在读取ANSI编码格式的txt文件,每次读取的编码格式都不一样。

这里面只是做了一个测试,没有解决问题,主要原因是chardet库得到txt编码格式不是很准确

  1. import chardet
  2. import os
  3. if __name__ == '__main__':
  4. imageDir = "test/"
  5. for imageName in os.listdir(imageDir):
  6. txtPATH = os.path.join(imageDir, imageName)
  7. print("txtPATH \t", txtPATH)
  8. f = open(txtPATH, 'rb')
  9. r = f.read()
  10. # 获取文本的编码方式
  11. f_charInfo = chardet.detect(r)
  12. print(f_charInfo['encoding']) # 取得文本格式
  13. f.close()

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/751918
推荐阅读
相关标签
  

闽ICP备14008679号