做文本处理的同学在windows下工作可能经常会遇到带BOM的utf-8编码文件,这时需要对文件头BOM处理一下,不然会带来一些不好的影响。BOM字符的表示是codecs.BOM_UTF8。

首先要明确一点,在Python2中,codecs.BOM_UTF8是str类型,如果要与unicode进行对比的话需要转换一下。

下面展示Python2采用不同的读文件方式时处理BOM的代码:

with open("test.txt", "r") as fr:

for line in fr:

if line[:3] == codecs.BOM_UTF8:

line = line[3:]

print line

import codecs

with codecs.open("test.txt", "r", "utf-8") as fr:

for line in fr:

if line[0].encode("utf-8") == codecs.BOM_UTF8:

# 或使用

# if line[0] == codecs.BOM_UTF8.decode("utf-8"):

line = line[1:]

print line

python3中比较简单,只有一种方式,代码如下:

with open("test.txt", "r") as fr:

for line in fr:

if line[0] == codecs.BOM_UTF8.decode("utf-8"):

line = line[1:]

print line

import codecs

with codecs.open("test.txt", "r", "utf-8") as fr:

for line in fr:

# 代码与上面一样

if line[0] == codecs.BOM_UTF8.decode("utf-8"):

line = line[1:]

print line

最好养成这样写代码的好习惯,永不再出错。

得大神指点,有一种最简便的方式

指定编码方式为“utf_8_sig”即可解决删除文件头BOM

import codecs

with codecs.open("test.txt", "r", "utf_8_sig") as fr:

for line in fr:

print line

python utf8 bom_python处理BOM相关推荐

  1. UTF8文件带BOM引起的问题——iOS端竟然加载出了html代码

    起因是公司iOS端竟然加载出来了HTML代码,百思不得其解,查文献,原来如此... UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM. 所以不含 BOM 的 U ...

  2. Pandas读取中文文本文件报错:python ‘utf-8‘ codec can‘t decode byte 0xe3 in position 0: unexpected end of data

    近日用pandas的read_csv读取中文文本文件时报错:python 'utf-8' codec can't decode byte 0xe3 in position 0: unexpected ...

  3. QT与VS环境下代码文件编码格式使用utf-8与带BOM的utf-8的差异

    QT与VS环境下代码文件编码格式使用utf-8与带BOM的utf-8的差异 使用QT进行开发的时候,有时候通常会遇到使用中文的时候,就算格式为utf-8,也会出现编译错误的问题,一般无从下手,这几天看 ...

  4. utf-8与带有BOM的utf-8的区别

    最近在学习处理的过程中,遇到了需要txt转换为csv文件的需求,第一步当然是另存txt为utf-8的格式,但是博主在保存时,发现了utf-8有两种格式,如下图: 怀着求知欲,我查找了一下两者的区别,现 ...

  5. CSV乱码 - UTF-8 Unicode (with BOM)

    Unicode 统一码,也叫万国码.单一码(Unicode)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字 ...

  6. 用ISO-8859-1解决Python ‘utf-8‘ codec can‘t decode bytes in position 924-925问题

    用ISO-8859-1解决Python 'utf-8' codec can't decode bytes in position 924-925问题 参考文章: (1)用ISO-8859-1解决Pyt ...

  7. mysql去bom头_使用editplus等编程工具时UTF-8编码去掉BOM头方法

    Unicode规范中有一个BOM的概念.BOM--Byte Order Mark,就是字节序标记.在这里找到一段关于BOM的说明: 在UCS 编码中有一个叫做"ZERO WIDTH NO-B ...

  8. Python学习笔记:BOM

     版权声明: 本文为博主原创文章,转载请注明出处. https://blog.csdn.net/founderznd/article/details/52197078 #前言 windows对于utf ...

  9. java utf-8文件处理bom头

    参考:http://www.cnblogs.com/wanglao/p/5337836.html http://akini.mbnet.fi/java/unicodereader/UnicodeRea ...

  10. php文件代码采用UTF-8编码的BOM问题---转自CSDN---十方地藏---http://blog.csdn.net/webdesman...

    一个项目,代码编码均为utf-8编码,发现问题:在使用session的时候报错,错误如下: ------------------------------------------------- Warn ...

最新文章

  1. 10小时,这回一次搞定 Kafka 源码!
  2. 15个最佳的代码评审(Code Review)工具
  3. FLOW福禄创始人朱萧木:如何通过产品设计助力品牌营销传播
  4. 2016个人阅读计划
  5. php 创建 cookie文件,php创建、获取cookie及基础要点分析
  6. amd vega56 ubuntu 下 tensorflow GPU rocm 运行情况记录及跑分
  7. oracle多次发运,EBS 发运管理操作实例11——延迟交货(Backorder)
  8. 解决12306登录验证码python
  9. 签名档php,签名档文字
  10. 百度导航hd android,百度导航hd版-百度导航hd版下载-安卓手机4.5.1APP免费软件-最笨下载...
  11. CSDN资源下载 不限积分/C币 都可以下
  12. 服务器抓不到mrcp信息,MRCP学习笔记-语音识别资源的事件和headers详解
  13. python找最长的单词_318. 最长单词长度乘积(Python)
  14. qq邮箱如何在win10邮箱连接到服务器,Win10系统自带Mail应用添加QQ邮箱的方法
  15. MYSQL super_read_only 到底有没有必要存在
  16. 自动驾驶汽车的库尔雪维尔测试是不可能的挑战
  17. Java学习——泛型
  18. 了解前端(html,css)
  19. 神仙接私活神器,好用的后台管理系统,功能完整,代码结构清晰,强推
  20. MS MARCO Document Ranking Leaderboard —— UniRetriever

热门文章

  1. Jupter notebook 常用配置
  2. Javascript Object
  3. matlab导入小数点后9位以上的浮点数
  4. 漫谈无丢包网络拥塞控制和端到端原则
  5. jquery中国省市两级联动
  6. Java自带的httpclient实现文件的上传与下载以及表单提交和网页访问
  7. 创基Type-C扩展坞可以保证设备安全工作
  8. 公司文件防泄密软件——「天锐绿盾」@德人合科技
  9. 470冰法打1000w木桩 51000秒伤
  10. bzoj5277 [Usaco2018 Open]Out of Sorts(智商题)