做文本处理的同学在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 cad 二次开发bom_python处理BOM相关推荐

  1. python cad 二次开发bom_30.Python前端基础之BOM和DOM

    前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...

  2. 用Python做CAD二次开发(打印)

    用Python做CAD二次开发(打印) 在CSDN上用CAD做二次开发的文章已经有大神做出来了,本文中也直接把部分代码搬了过来. 现在把打印图纸的代码发上来让大家看看,权当补充说明. 大部分方法查ac ...

  3. C#实战之CAD二次开发006:与python进行Socket传输文件

    前言 前面介绍了与CAD相关的一些功能,本期介绍一下C#和python如何通过socket通信来进行文件的传输,建议不了解Socket的同学先去了解一下socket的通讯原理,这样看起来不会云里雾里的 ...

  4. python能做cad二次开发吗_做CAD二次开发有没有前途和钱途?

    原标题:做CAD二次开发有没有前途和钱途? 作为上海垂杨信息科技的苦逼小编一枚,特别羡慕从事技术开发的同事,为啥呀,因为他们工资高,奖金多呗.最近一朋友问我,他大学学得C#,在学校的就业培训课上,就业 ...

  5. 据说这是熟练掌握python的爷们_dongbei 是一门基于 Python 3 二次开发的东北方言编程语言...

    dongbei - 东北方言编程语言 学编程,就整东北浪! 体格咋地 扫码关注原作者微信公众号"老万故事会": 引言 dongbei是啥?它是一门以东北方言词汇为基本关键字的以人为 ...

  6. abaqus python二次开发攻略_Abaqus二次开发Python脚本二次开发

    在上一篇博文中简要介绍了Abaqus中FORTRAN子程序二次开发,那么这次将对Abaqus的Python脚本二次开发进行概述. 就像在上一篇博文中提到的,基于Python的脚本开发又可以细分为如下三 ...

  7. cad二次开发程序的绿色安装

    此问题的引入是因为一个cad二次开发软件,客户要求做成绿色安装.何为绿色安装呢?软件包copy到一台电脑上(已安装CAD),双击exe,打开的界面包含自定义的菜单.菜单的图标能正确显示.每个功能能使用 ...

  8. intersect 相交 范围_关于CAD二次开发中(范围线自相交)相交线的问题

    CAD二次开发对于毕业没多久,又是半路出家的我来说,是一个很大的挑战,遇到过很多难以解决的问题,这次在CAD二次开发遇到一个很苦恼的问题:判断 一个由线段组成的闭合区域中,是否存在着相互之间相交的线段 ...

  9. CAD 二次开发 图层操作(1)创建图层

    CAD二次开发的资料比较少,除了李冠亿先生的<深居浅出AutoCAD二次开发>这本书之外,目前没有找到合适的参考资料.现将自己工作中用的的一些方法贴出来.方便各位网友快速入门. #regi ...

  10. CAD 二次开发 图层操作(3)取得指定图层下的所有对象id

    对于CAD二次开发的人来说,可能需要对某一图层下的实体(点,线,面域,块,三维实体)进行不同的操作.下面的方法,即可实现获取指定图层名称下的所有实体ID. 输入参数为图层名称: 返回值为:对象主键集合 ...

最新文章

  1. Android N在通知栏上实现直接回复消息
  2. Laplacian函数
  3. 开启MYSQL慢查询日志
  4. 舆情分析系统技术解决方案及作用
  5. android 焦点的作用,详细介绍Android中的视图焦点Focus的使用
  6. mac怎么用ntfs硬盘 NTFS移动硬盘怎么在mac上使用
  7. win7计算机共享用户名和密码,Win7共享提示用户名密码错误怎么办
  8. hdu6184 判断三元环
  9. java将Word转换成PDF
  10. twitter sdk android,android – 登录Twitter失败
  11. HNUST OJ 2292 烟花易逝
  12. VLAN间的三层通信
  13. 云班课python答案_云班课 答案 脚本
  14. HTML 笔记/案例
  15. 【ACF学习】ACF安装、训练及检测初探
  16. 融合蓝牙与IoT 拓展Wi-Fi商业价值
  17. IP-Guard应用攻略:如何解决员工违规安装软件的问题
  18. r -改变ggplot2中轴文本的字体大小和方向
  19. 关于xmind破解的方法
  20. 29.CSRF及SSRF漏洞案例讲解

热门文章

  1. 机器人动力学与参数辨识学习笔记(一)
  2. 「标签管理」用数据管理思维去管理你的日常电子化资料、文件、笔记等
  3. PG目录操作封装——dirent一:postgresql-8.4.1\src\port\dirent.c
  4. 使用abd工具查看安卓设备cpu处理器是32位或64位
  5. iOS使用自定义字体,比如楷体
  6. h3c s5500 ssh v5 配置_H3C S5500 V2基本配置及配置命令
  7. matlab画累计直方图_科学网—matlab 绘制直方图——常用命令 - 范凯波的博文
  8. 学习笔记 | 算法导论学习笔记1
  9. C语言课程设计 简单的单词学习系统
  10. 菜鸟又出手!家里没人也能收包裹,这个黑科技还获过阿里内部大奖