python读文件时的编码问题(BOM)


Python代码:


<span style="font-family:Times New Roman;"># -*- coding: UTF-8 -*-
import codecs
#f1 = codecs.open("D:\\python_code\\bayes\\data\\label.txt", 'r', 'utf-8')
f1 = open("D:\\python_code\\bayes\\data\\label.txt")

list1 = ['味道', '物流', '外观', '包装', '性价比',  '品质', '功效', '价格', '赠品', '服务']
list2 = []
for line in f1:
    line = line.strip()
    list2.append(line)

print list1
print list2

for l1 in list1:
    #l1 = l1.decode("utf-8")
    print l1,
    if l1 in list2:
        print True
    else:
        print False</span>


label.txt:
味道
物流
外观
包装
性价比
品质
功效
价格
赠品
服务


运行结果:

<span style="font-family:Times New Roman;">list1: ['\xe5\x91\xb3\xe9\x81\x93', '\xe7\x89\xa9\xe6\xb5\x81', '\xe5\xa4\x96\xe8\xa7\x82', '\xe5\x8c\x85\xe8\xa3\x85' , .......]
list2: ['\xef\xbb\xbf\xe5\x91\xb3\xe9\x81\x93', '\xe7\x89\xa9\xe6\xb5\x81', '\xe5\xa4\x96\xe8\xa7\x82', '\xe5\x8c\x85\xe8\xa3\x85' ,..........]</span>


结果分析:对比两个list,list2中的第一个元素的Unicode编码多了'\xef\xbb\xbf'三个字节的字符串,这样的话我们在使用带这种标记的数据是可能会出现错误,出现这种错误的原因是因为在.txt的文件时,txt文件会在该文件的第一行加入这三个字节作为开始的标记符,这种标记叫BOM,当然我们在保存的时候可以把文件保存为无BOM的文件格式,这种错误通常都很隐蔽,需要注意!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值