python 提取csv文件内容遇到ufeff非法字符
python 提取csv文件内容遇到ufeff非法字符
使用python3提取csv文件的时候,提取来的数据用set去重后发现有ufeff非法字符,影响接下来的操作
产生该现象的原因是 UTF 的编码格式分为 UTF-8 和 UTF-8 with BOM,前者 UTF-8 是没有字节序的问题的,而后者 BOM 则表示 Byte Order Mark,是存在字节序的区分的
处理
python在读取 UTF-8 with BOM 编码的文件时需要选择 UTF-8-sig 关键字指明编码格式
将读取文件部分
with open('./test.csv','r',encoding='utf-8') as f:
改为
with open('./test.csv','r',encoding='utf-8-sig') as f:
我们如何知道自己的编码格式呢?
探测编码格式类型
可以通过chardet库自动对编码格式进行判断(该库一般是不需要单独安装的)。
示例代码如下:
import chardet
with open("xxx.file", "rb") as fp:
rawdata = fp.read()
encoding_format = chardet.detect(rawdata)["encoding"]
print(encoding_format )
打印当前编码格式类型