生活随笔
收集整理的這篇文章主要介紹了
五、json模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、json模塊的介紹
json模塊是Python自帶的模塊,用于json和Python數據之間的相互轉換
Json與Python數據類型的對應關系
JsonPython
| object | dict |
| array | list |
| string | str |
| number(int) | int,long |
| number(real) | float |
| true | True |
| false | False |
| null | None |
[{"beyond":"yanyu"},{"age":22}
]
二、JSON轉換為Python
1,把JSON字符串轉為Python數據
import jsonjson_str
= '''[{"name":"huangjiaju","age":"43","band":"beyond"}]'''rs
= json
.loads
(json_str
)
print(rs
)print(type(rs
))
print(type(rs
[0]))
2,把JSON格式的文件轉為Python類型的數據
json.json
[{"name":"huangjiaju","age":"43","band":"beyond"}
]
import json
with open("E:\Jupyter_workspace\study\python\爬蟲\json.json") as fp
:python_list
= json
.load
(fp
)print(python_list
)print(type(python_list
))print(type(python_list
[0]))
三、Python轉換為JSON
1,把Python類型數據轉為JSON字符串
import jsonpython_str
= '''[{"name":"huangjiaju","age":"43","band":"beyond"}]'''
rs
= json
.loads
(python_str
)
json_str
= json
.dumps
(rs
,ensure_ascii
=False)
print(json_str
)
2,把Python類型數據以JSON格式存儲到文件中
import jsonpython_str
= '''[{"name":"huangjiaju","age":"43","band":"beyond"}]'''
rs
= json
.loads
(python_str
)with open("E:\Jupyter_workspace\study\python\爬蟲\json1.json",'w') as fp
:json
.dump
(rs
,fp
,ensure_ascii
=False)
最終效果為生成json1.json,成功的把Python類型數據以JSON格式存儲到文件中。
json1.json內容如下:
四、解析最新的疫情數據的json字符串
步驟:
發送請求,獲取疫情首頁從疫情首頁中提取各國疫情字符串從各國疫情字符串中,提取json格式字符串把json格式字符串轉換為Python數據類型
當然,數據來源仍然是丁香園新型冠狀病毒肺炎疫情實時動態首頁
url:https://ncov.dxy.cn/ncovh5/view/pneumonia
import requests
import re
import json
from bs4
import BeautifulSoup
response
= requests
.get
('https://ncov.dxy.cn/ncovh5/view/pneumonia')
home_page
= response
.content
.decode
()
soup
= BeautifulSoup
(home_page
,'lxml')
script
= soup
.find
(id='getAreaStat')
text
= script
.text
json_str
= re
.findall
(r'\[.+\]',text
)[0]
last_day_HongKong_num
= json
.loads
(json_str
)
print(last_day_HongKong_num
)
'''
[{'provinceName': '香港', 'provinceShortName': '香港', 'currentConfirmedCount': 5990, 'confirmedCount': 22468, 'suspectedCount': 181, 'curedCount': 16190, 'deadCount': 288, 'comment': '疑似 1 例', 'locationId': 810000, 'statisticsData': 'https://file1.dxycdn.com/2020/0223/331/3398299755968040033-135.json', 'highDangerCount': 0, 'midDangerCount': 0, 'detectOrgCount': 0, 'vaccinationOrgCount': 0, 'cities': [], 'dangerAreas': []}, {'provinceName': '臺灣', 'provinceShortName': '臺灣', 'currentConfirmedCount': 5462, 'confirmedCount': 20056, 'suspectedCount': 485, 'curedCount': 13742, 'deadCount': 852, 'comment': '', 'locationId': 710000, 'statisticsData': 'https://file1.dxycdn.com/2020/0223/045/3398299749526003760-135.json', 'highDangerCount': 0, 'midDangerCount': 0, 'detectOrgCount': 0, 'vaccinationOrgCount': 0, 'cities': [], 'dangerAreas': []}, {'provinceName': '浙江省', 'provinceShortName': '浙江', 'currentConfirmedCount': 388, 'confirmedCount': 2255, 'suspectedCount': 68, 'curedCount': 1866, 'deadCount': 1, 'comment': '2月10日通報核減的12例在浙江省治愈的外省病例,根據國家最新要求重新納入累計病例。', 'locationId': 330000, 'statisticsData': 'https://file1.dxycdn.com/2020/0223/537/3398299755968455045-135.json', 'highDangerCount': 0, 'midDangerCount': 0, 'detectOrgCount': 519, 'vaccinationOrgCount': 217, 'cities': [{'cityName': '杭州', 'currentConfirmedCount': 143, 'confirmedCount': 328, 'suspectedCount': 0, 'curedCount': 185, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 330100, 'currentConfirmedCountStr': '143'}, {'cityName': '境外輸入', 'currentConfirmedCount': 119, 'confirmedCount': 387, 'suspectedCount': 68, 'curedCount': 268, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 0, 'currentConfirmedCountStr': '119'}, {'cityName': '寧波', 'currentConfirmedCount': 110, 'confirmedCount': 269, 'suspectedCount': 0, 'curedCount': 159, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 330200, 'currentConfirmedCountStr': '110'}, {'cityName': '紹興', 'currentConfirmedCount': 38, 'confirmedCount': 430, 'suspectedCount': 0, 'curedCount': 392, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 330600, 'currentConfirmedCountStr': '38'}, {'cityName': '金華', 'currentConfirmedCount': 2, 'confirmedCount': 57, 'suspectedCount': 0, 'curedCount': 55, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 330700, 'currentConfirmedCountStr': '2'}, {'cityName': '溫州', 'currentConfirmedCount': 0, 'confirmedCount': 504, 'suspectedCount': 0, 'curedCount': 503, 'deadCount': 1, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 330300, 'currentConfirmedCountStr': '0'}, {'cityName': '臺州', 'currentConfirmedCount': 0, 'confirmedCount': 147, 'suspectedCount': 0, 'curedCount': 147, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 331000, 'currentConfirmedCountStr': '0'}, {'cityName': '嘉興', 'currentConfirmedCount': 0, 'confirmedCount': 46, 'suspectedCount': 0, 'curedCount': 46, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 330400, 'currentConfirmedCountStr': '0'}, {'cityName': '省十里豐監獄', 'currentConfirmedCount': 0, 'confirmedCount': 36, 'suspectedCount': 0, 'curedCount': 36, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 0, 'currentConfirmedCountStr': '0'}, {'cityName': '麗水', 'currentConfirmedCount': 0, 'confirmedCount': 17, 'suspectedCount': 0, 'curedCount': 17, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 331100, 'currentConfirmedCountStr': '0'}, {'cityName': '衢州', 'currentConfirmedCount': 0, 'confirmedCount': 14, 'suspectedCount': 0, 'curedCount': 14, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 330800, 'currentConfirmedCountStr': '0'}, {'cityName': '湖州', 'currentConfirmedCount': 0, 'confirmedCount': 10, 'suspectedCount': 0, 'curedCount': 10, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 330500, 'currentConfirmedCountStr': '0'}, {'cityName': '舟山', 'currentConfirmedCount': 0, 'confirmedCount': 10, 'suspectedCount': 0, 'curedCount': 10, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 330900, 'currentConfirmedCountStr': '0'}, {'cityName': '待明確地區', 'currentConfirmedCount': -24, 'confirmedCount': 0, 'suspectedCount': 0, 'curedCount': 24, 'deadCount': 0, 'highDangerCount': 0, 'midDangerCount': 0, 'locationId': 0, 'notShowCurrentConfirmedCount': True, 'currentConfirmedCountStr': '-'}], 'dangerAreas': []}, {'provinceName': '廣東省', 'provinceShortName': '廣東', 'currentConfirmedCount': 362, 'confirmedCount': 4163, 'suspectedCount': 25, 'curedCount': 3793, 'deadCount': 8, 'comment': '廣東衛健委未明確部分治愈病例的地市歸屬,因此各地市的現存確診存在一定偏差。', 'locationId': 440000, 'statisticsData': 'https://file1.dxycdn.com/2020/0223/281/3398299758115524068-135.json', 'highDangerCount': 0, 'midDangerCount': 3, 'detectOrgCount': 120, 'vaccinationOrgCount': 42, 'cities': [{'cityName': '深圳', 'currentConfirmedCount': 145, 'confirmedCount': 798, 'suspectedCount': 3, 'curedCount': 650, 'deadCount': 3, 'highDangerCount': 0, 'midDangerCount': 3, 'locationId': 440300, 'currentConfirmedCountStr': '145'}, {'cityName': '廣州', 'currentConfirmedCount': 98, 'confirmedCount': 2205, 'suspectedCount': 3, 'curedCount': 2106, 'deadCount': 1, 'highDangerCount': 0, 'midDangerCount': 0,內容過多此處省略
'''
總結
以上是生活随笔為你收集整理的五、json模块的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。