python 读txt文件的时候,经常遇到编码报错的问题。处理文本读取,首先要确定文件的编码方式,然后通过指定encoding类别的方式读取文件,遇到无法解析的字符,可以通过指定未识别字符的处理方式处理。
1.识别文件编码
通过chardet 返回文件的编码类型,未识别的类型返回None
import chardet
# 获取文件编码类型
def get_encoding(file):
# 二进制方式读取,获取字节数据,检测类型
with open(file, 'rb') as f:
return chardet.detect(f.read())['encoding']
file_name = 'my.ini'
encoding = get_encoding(file_name)
2. 读取文件指定encoding
with open('../corpus.txt', encoding='utf-8', mode = 'r') as f:
3. 未识别字符处理方式
指定open的errors属性,设置未识别字符处理方式
with open('../corpus.txt', encoding='utf-8', mode = 'r', errors='replace') as f:
errors 是open函数的可选参数,指定encoding和decoding过程的error处理方式,有几种标准error handler,也可以通过codec