python去掉BOM头的方法

Posted 潘美丽的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python去掉BOM头的方法相关的知识,希望对你有一定的参考价值。

今天在写批量生成身份证号造数据的时候出现了问题,其中一个是报不能转成int型,后经查找,发现是utf-8BOM头的问题。

什么是BOM?

  在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码。其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行。

类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。

 

  当在读txt时一旦读到BOM头就会报错。

处理方法如下:

import codecs

with open(file_path, "r") as file:
    data = file.read()
    data = data.replace(codecs.BOM_UTF8, "")
    districtlist = data.split(\n)
    file.closed

 

以上是关于python去掉BOM头的方法的主要内容,如果未能解决你的问题,请参考以下文章

求个给UTF-8文件批量去UTF-8 BOM头的批处理,去掉BOM后覆盖原来的文件,最好我可以自己添加多个文件名称!

php批量检测并去除BOM头的代码

一个批量移除BOM头的bash脚本

PHP去除BOM头的方法

PHP去除BOM头的方法

nootpad++去除bom头