python通过json库去读取json文件里面的内容

一、遇到的问题:

1、json.decoder.JSONDecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1 (char 0):

解:因为 utf-8 和 utf-8-sig 是不一样的,我们将 其改成  utf-8-sig  就可以运行了。

 

PS:As UTF-8 is an 8-bit encoding no BOM is required and anyU+FEFF character in the decoded Unicode string (even if it’s the firstcharacter) is treated as a ZERO WIDTH NO-BREAK SPACE.

UTF-8以字节为编码单元,它的字节顺序在所有系统中都是一様的,没有字节序的问题,也因此它实际上并不需要BOM(“ByteOrder Mark”)。但是UTF-8 with BOM即utf-8-sig需要提供BOM。

 

二、正题,读取 json 数据

1、data.json 内容如下:

[
  {
    "test": {
      "one": "2",
      "two": "2"
    },

    "author": "宋太祖",
    "paragraphs": [
      "欲出未出光辣達,千山萬山如火發。", 
      "須臾走向天上來,逐却殘星趕却月。"
    ], 
    "strains": [
      "仄仄仄仄平仄仄,平平仄平○仄仄。", 
      "平平仄仄平仄平,仄仄平平?仄仄。"
    ], 
    "title": "日詩"
  }, 
  {
    "author": "宋太祖", 
    "paragraphs": [
      "未離海底千山黑,纔到天中萬國明。"
    ], 
    "strains": [
      "仄○仄仄平平仄,平仄平○仄仄平。"
    ], 
    "title": "句"
  }
]

2、python读取json文件代码:
 

import json

def read_font():
    file = open('data.json', 'r', encoding='utf-8-sig')
    s = json.load(file)
    print(s[0])
    # 运行结果为:{'test': {'one': '2', 'two': '2'}, 'author': '宋太祖', 'paragraphs': ['欲出未出光辣達,千山萬山如火發。', '須臾走向天上來,逐却殘星趕却月。'], 'strains': ['仄仄仄仄平仄仄,平平仄平○仄仄。', '平平仄仄平仄平,仄仄平平?仄仄。'], 'title': '日詩'}

    print(s[0]['test']['two']) #注意 数组 与 多重结构 的访问方式!
    #  运行结果为:2


if __name__ == '__main__' :
    read_font()

 

三、总结:

0、运到问题先看报错内容,实在不能解决再百度。

1、错把  if __name__ == '__main__' :  写成  if  '__name__' == '__main__' :  .实在有毒,可能太久没有写 python 的原因。

2、感觉 编码的东西 好烦,不知道大神们 有啥诀窍没?? utf gbk ansi 等一会 decode 一会 encode 着实写代时候深感不适呀

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值