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 )

打印当前编码格式类型

posted @ 2023-03-08 13:37  liwenchao1995  阅读(101)  评论(0编辑  收藏  举报