python之路

python处理包含bom的utf-8格式文件

2020-04-06  本文已影响0人  非鱼2018

工作需要,需要解析个jsom文件,用的过程中突然遇到这种错误,自己看了半天没有头绪,百度了下,
包含bom的utf8格式是指:的文件时开头会有一个多余的字符\ufeff,它叫BOM,是用来声明编码等信息的,但python会把它当作文本解析。
直接使用utf8编码解析会报错如下

file=open('data.txt',encoding='utf')
content=file.read()
data = json.loads(content)
BOM_error.PNG

j解决方法
1.直接使用encoding='utf_8_sig'处理带有包含bom的utf-8

file=open('data.txt',encoding='utf_8_sig')
content=file.read()

2.如果包含\ufeff则把该字符过滤掉

if content.startswith(u'\ufeff'):
      content = content.encode('utf8')[3:].decode('utf8')

3.想起来chardet库可以自动解析文件编码格式,直接检测算了

import chardet  #第三方库,需要先安装
with open('data.txt', 'rb') as f:
    data = f.read()
code_type = chardet.detect(data)['encoding']
f = open('data.txt', encoding=code_type)
content = f.read()
data = json.loads(content)
print(data)
print(type(data))
上一篇下一篇

猜你喜欢

热点阅读