python utf8 bom_python处理BOM

在Windows下做文本处理,常遇到带BOM的UTF-8编码文件,需处理文件头BOM。博客给出Python2和Python3不同读文件方式处理BOM的代码,还介绍了一种简便方式,即指定编码方式为“utf_8_sig”来解决删除文件头BOM问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做文本处理的同学在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值