专栏首页不仅仅是python(三十二) 初遇python之json模块

(三十二) 初遇python之json模块

各位读者大大们大家好,今天学习python的json模块,并记录学习过程欢迎大家一起交流分享。

新建一个python文件命名为py3_json.py,在这个文件中进行操作代码编写:

import json

#定义一个json字符串
people_str = '''
{
  "people":[
    {
      "name":"yale",
      "age" : 25,
      "email" :"yale@email.com"
    },
    {
      "name":"McBag",
      "age" : 30,
      "email" :null
    }
  ]
}
'''
#使用json.loads()加载字符串
data = json.loads(people_str)
print(data)
#返回的是一个python字典
#{'people': [{'name': 'yale', 'age': 25, 'email': 'yale@email.com'}
#, {'name': 'McBag', 'age': 30, 'email': None}]}
print(type(data['people']))#返回<class 'list'>
#我们循环读取数据
for people in data['people']:
  print(people)
  #print(people['name'])
#{'name': 'yale', 'age': 25, 'email': 'yale@email.com'}
#{'name': 'McBag', 'age': 30, 'email': None}
#删除email信息
for people in data['people']:
  del people['email']
#使用json.dumps()
#将Python对象编码成JSON字符串
#indent缩进显示
#sort_keys按照key排序
new_string = json.dumps(data,indent=1,sort_keys=True)
print(new_string)
#打印结果:
'''
{
 "people": [
  {
   "name": "yale",
   "age": 25
  },
  {
   "name": "McBag",
   "age": 30
  }
 ]
}
'''
#加载json文件
with open('people.json','r') as f:
  data = json.load(f)
#打印数据
for person in data['people']:
  print(person['name'],person['age'],person['email']) 
#写入json文件
for person in data['people']:
  del person['email']
with open('new_data.json','w') as wf:
  new_json = json.dumps(data,indent=2)
  wf.write(new_json)
#读取新浪新闻的json
import re
from urllib.request import urlopen
#请求一个新浪新闻地址
with urlopen('''http://top.news.sina.com.cn/ws/GetTopDataList.php?top_type=day&top_cat=qbpdpl&top_time=20190531&top_show_num=100&top_order=DESC&js_var=comment_all_data''') as response:
   source = response.read()
   source = source.decode()
#正则匹配出json字符串部分   
try:
  pattern = re.compile(r'\{\"conf\".*\}\]\}')
  matches = pattern.findall(source)
  data = json.loads(matches[0])
  for item in data['data']:
    print(item['id'],item['title'])
except Exception as e:
  print('出错了',e)
#部分运行效果:
#5208 有埃神的恒大曾代表中国 那有埃神的国足为何不行
#5215 浅肤色直长发 30位印度小姐候选佳丽照引网友关注
#5222 《复联》拍摄地通过最严反堕胎法 迪士尼或将撤出
#5229 《破冰行动》导演为逻辑Bug道歉 回应感情戏多余

运行结果:

{'people': [{'name': 'yale', 'age': 25, 'email': 'yale@email.com'}
, {'name': 'McBag', 'age': 30, 'email': None}]}
<class 'list'>
{'name': 'yale', 'age': 25, 'email': 'yale@email.com'}
{'name': 'McBag', 'age': 30, 'email': None}
{
 "people": [
  {
   "age": 25,
   "name": "yale"
  },
  {
   "age": 30,
   "name": "McBag"
  }
 ]
}
yale 25 yale@email.com
McBag 30 None
TestUser 30 testuser@163.com
5208 《破冰行动》导演为逻辑Bug道歉 回应感情戏多余
5215 库里34+5双卡55分 猛龙击退勇士总决赛1-0领先
......

今天初学python的json模块学习就到这里!

关注公号

下面的是我的公众号二维码图片,欢迎关注。

本文分享自微信公众号 - yale记(python_yale_learning),作者:yale记

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 初遇python甚是喜爱之Dictionaries操作

    各位读者大大们大家好,今天学习python的Dictionaries操作,并记录学习过程欢迎大家一起交流分享。

    亚乐记
  • 数据分析-Pandas DataFrame的连接与追加

    今天我们学习多个DataFrame之间的连接和追加的操作,在合并DataFrame时,您可能会考虑很多目标。例如,您可能想要“追加”它们,您可能会添加到最后,基...

    亚乐记
  • (二十) 初遇python甚是喜爱之list Comprehensions列表推导式

    各位读者大大们大家好,今天学习python的列表推导式,并记录学习过程欢迎大家一起交流分享。

    亚乐记
  • 复选框实现子节点父节点联动

    麦克劳林
  • 创建对象的几种方法及优缺点

    使用字面量的方式更简单,其实他俩是一样的。 优点是足够简单,缺点是每个对象都是独立的。

    九旬大爷
  • jface databinding: Radio Button group及ISideEffect绑定数据对象的例子

    下图左侧是三个Radio button,设计的要求是选择不同的radio button,右侧的三个group会分别有不同的可见状态(visible),并且将ra...

    用户1148648
  • Java转Ruby【快速入门】

    对于准备迈入 Ruby 的 Java 程序员来说,有几个地方需要特别的去了解一下。

    我没有三颗心脏
  • nginx的SSL配置模板

            server_name     lnmp.org www.lnmp.org;

    二狗不要跑
  • [Java面试三]JavaWeb基础知识总结.

    一枝花算不算浪漫
  • 美科学家研发能从干燥的沙漠空气中造水的新设备 | 黑科技

    镁客网

扫码关注云+社区

领取腾讯云代金券