python 去掉 <0xfeff> 字符

1. 问题

今天用 python 跑文本数据时,发现有些行出现了 <0xfeff> 字符,经过查找,得知某些文件,如果用 UTF-8、UTF-16 或 UTF-32 进行编码,则可能在文件的开头包含字节顺序标记(Byte Order Marker,BOM),即 <0xfeff> 是 BOM,接下来分别介绍一下 BOM,以及给出 python 去除 BOM 的方法。

某些行出现.png

2. BOM

对于人类而言,很容易便可以知道字节的读取顺序,但是计算机不知道,因此需要给一些指令告诉计算机按照什么顺序读取字节,BOM便是这样的一种指令,其是一种用于标识的unicode字符,它常被用来当做标示以UTF-8、UTF-16或UTF-32为编码的文件。

3. 去除方案

比如需要去除变量 s 的 BOM,python 中只需要使用下面的代码即可。

import codecs
s.replace(codecs.BOM_UTF8, "")

参考文献

[1] 聊一聊BOM
[2] python去掉BOM头的方法

你可能感兴趣的:(python 去掉 <0xfeff> 字符)