最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python讀寫JSON文件的操作詳解

 更新時(shí)間:2022年04月12日 13:41:15   作者:Mr數(shù)據(jù)楊  
JSON數(shù)據(jù)類型最常用的應(yīng)用場(chǎng)景就是API或?qū)?shù)據(jù)保存到 .json穩(wěn)當(dāng)數(shù)據(jù)中。使用Python處理這些數(shù)據(jù)會(huì)變得非常簡單,本文將詳細(xì)講解Python如何讀寫JSON文件的,需要的可以參考一下

JSON

JSON 起源

JSON 全稱 JavaScript Object Notation 。是處理對(duì)象文字語法的 JavaScript 編程語言的一個(gè)子集。JSON 早已成為與語言無關(guān)的語言,并作為自己的標(biāo)準(zhǔn)存在。

JSON 樣例

{
	 "data":[
	  {
	    "id": "1",
	    "name": "A同學(xué)",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
	    "id": "2",
	    "name": "B同學(xué)",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
	    "id": "3",
	    "name": "C同學(xué)",
	    "state": "0",
	    "createTime": "2020-01-21"
	  }
	]
}

Python 原生支持 JSON

Python 帶有一個(gè)內(nèi)置包 json,用于對(duì) JSON 數(shù)據(jù)進(jìn)行編碼和解碼。

引用方式。

import json

JSON 編碼的過程通常稱為序列化。該術(shù)語是指將數(shù)據(jù)轉(zhuǎn)換為一系列字節(jié)通過網(wǎng)絡(luò)存儲(chǔ)或傳輸。反序列化是解碼以 JSON 標(biāo)準(zhǔn)存儲(chǔ)或交付的數(shù)據(jù)的交互過程。

序列化 JSON

直觀的轉(zhuǎn)換將簡單的 Python 對(duì)象轉(zhuǎn)換為 JSON。

PythonJSON
dictobject
list,tuplearray
strstring
int, long,floatnumber
Truetrue
Falsefalse
Nonenull

簡單的序列化示例

創(chuàng)建一個(gè)簡單的數(shù)據(jù)。

data =   {
	 "data":[
	  {
	    "id": "1",
	    "name": "A同學(xué)",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
	    "id": "2",
	    "name": "B同學(xué)",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
	    "id": "3",
	    "name": "C同學(xué)",
	    "state": "0",
	    "createTime": "2020-01-21"
	  }
	]
}

數(shù)據(jù)直接以文本方式保存。

with open("data_file.json", "w") as f:
    json.dump(data, f)

數(shù)據(jù)直接以字符串方式使用。

json_str = json.dumps(data)

JSON 反序列化

在 json 庫中使用 load() 和 oads() 用于將 JSON 編碼數(shù)據(jù)轉(zhuǎn)換為 Python 對(duì)象。

JSONPython
objectdict
arraylist
stringstr
number(整數(shù))int
number(浮點(diǎn)數(shù))float
trueTrue
falseFalse
nullNone

簡單的反序列化示例

讀取寫入json文件的數(shù)據(jù)。

with open("data_file.json", "r") as read_file:
    data = json.load(read_file)

字符串?dāng)?shù)據(jù)。

json_string = """
{
	 "data":[
	  {
	    "id": "1",
	    "name": "A同學(xué)",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
	    "id": "2",
	    "name": "B同學(xué)",
	    "state": "1",
	    "createTime": "2020-01-21"
	  },
	  {
	    "id": "3",
	    "name": "C同學(xué)",
	    "state": "0",
	    "createTime": "2020-01-21"
	  }
	]
}
"""
data = json.loads(json_string)

應(yīng)用案例

通過互聯(lián)網(wǎng)的數(shù)據(jù)抓取解析文本信息。

# 秦皇島煤炭網(wǎng)微博
import requests
from bs4 import BeautifulSoup
import datetime
url = "http://news.cqcoal.com/manage/newsaction.do?method:webListPageNewsArchivesByTypeid"
post_param = {'pageNum':'1','pageSize':'20','jsonStr':'{"typeid":"238"}'}
return_data = requests.post(url,data =post_param)
return_data = return_data.content.decode("utf-8")

import json
for i in json.loads(return_data)["rows"]:
    title = i["title"]
    url = "http://news.cqcoal.com/blank/nc.jsp?mid="+str(i["id"])
    timeStamp=int(i["pubdate"])
    dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
    date = dateArray.strftime("%Y-%m-%d")
    print(title,url,date)

編碼和解碼

自定義數(shù)據(jù)。

import json

# 基礎(chǔ)的數(shù)字字典
py_object = {"c": 0, "b": 0, "a": 0}

# JSON 編碼
json_string = json.dumps(py_object)
print(json_string)
print(type(json_string))

{"c": 0, "b": 0, "a": 0}
<class 'str'>


# JSON 解碼
py_obj = json.loads(json_string)

print(py_obj)
print(type(py_obj))

{'c': 0, 'b': 0, 'a': 0}
<class 'dict'>

如果遇到 TypeError: Object of type SampleClass is not JSON serializable 的錯(cuò)誤就需要自定義編碼和解碼了。

import json

class Student:
	def __init__(self, name, roll_no, address):
		self.name = name
		self.roll_no = roll_no
		self.address = address

	def to_json(self):
		'''
		將此類的實(shí)例轉(zhuǎn)換為 json
		'''
		return json.dumps(self, indent = 4, default=lambda o: o.__dict__)

class Address:
	def __init__(self, city, street, pin):
		self.city = city
		self.street = street
		self.pin = pin
		
address = Address("Bulandshahr", "Adarsh Nagar", "203001")
student = Student("Raju", 53, address)

# 編碼
student_json = student.to_json()
print(student_json)
print(type(student_json))

{
    "name": "Raju",
    "roll_no": 53,
    "address": {
        "city": "Bulandshahr",
        "street": "Adarsh Nagar",
        "pin": "203001"
    }
}
<class 'str'>

# 解碼
student = json.loads(student_json)
print(student)
print(type(student))

{'name': 'Raju', 'roll_no': 53, 'address': {'city': 'Bulandshahr', 'street': 'Adarsh Nagar', 'pin': '203001'}}
<class 'dict'>

以上就是Python讀寫JSON文件的操作詳解的詳細(xì)內(nèi)容,更多關(guān)于Python讀寫JSON的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python計(jì)算一個(gè)序列的平均值的方法

    python計(jì)算一個(gè)序列的平均值的方法

    這篇文章主要介紹了python計(jì)算一個(gè)序列的平均值的方法,涉及Python遞歸遍歷與數(shù)學(xué)計(jì)算的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python存取XML的常見方法實(shí)例分析

    Python存取XML的常見方法實(shí)例分析

    這篇文章主要介紹了Python存取XML的常見方法,結(jié)合具體實(shí)例形式較為詳細(xì)的分析了Python存取xml的常用方法、優(yōu)缺點(diǎn)比較與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-03-03
  • opencv實(shí)現(xiàn)回形遍歷像素算法

    opencv實(shí)現(xiàn)回形遍歷像素算法

    這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)回形遍歷像素算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 解決Python pandas plot輸出圖形中顯示中文亂碼問題

    解決Python pandas plot輸出圖形中顯示中文亂碼問題

    今天小編就為大家分享一篇解決Python pandas plot輸出圖形中顯示中文亂碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 快速查詢Python文檔方法分享

    快速查詢Python文檔方法分享

    這篇文章主要介紹了快速查詢Python文檔方法分享,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • python使用xlrd與xlwt對(duì)excel的讀寫和格式設(shè)定

    python使用xlrd與xlwt對(duì)excel的讀寫和格式設(shè)定

    最近在用python處理excel表的時(shí)候出現(xiàn)了一些問題,所以想著記錄下最后的實(shí)現(xiàn)方式和問題解決方法。方便自己或者大家在有需要的時(shí)候參考借鑒,下面這篇文章主要就介紹了python使用xlrd與xlwt對(duì)excel的讀寫和格式設(shè)定的相關(guān)資料,一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • 解讀MaxPooling1D和GlobalMaxPooling1D的區(qū)別

    解讀MaxPooling1D和GlobalMaxPooling1D的區(qū)別

    這篇文章主要介紹了MaxPooling1D和GlobalMaxPooling1D的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python 解決相對(duì)路徑問題:

    Python 解決相對(duì)路徑問題:"No such file or directory"

    這篇文章主要介紹了Python 解決相對(duì)路徑問題:"No such file or directory"具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 使用wxPython獲取系統(tǒng)剪貼板中的數(shù)據(jù)的教程

    使用wxPython獲取系統(tǒng)剪貼板中的數(shù)據(jù)的教程

    這篇文章主要介紹了使用wxPython獲取系統(tǒng)剪貼板中的數(shù)據(jù)的教程,wxPython是一個(gè)非常受歡迎的Python圖形庫,需要的朋友可以參考下
    2015-05-05
  • 利用Python展示文件下載進(jìn)度條

    利用Python展示文件下載進(jìn)度條

    這篇文章主要介紹了Python展示文件下載進(jìn)度條,requests庫相信大家都用過,做接口測(cè)試少不了它。其實(shí)我們平時(shí)下載文件,也可以用requests做到的,通過一些地址,下面我們就來看看具體是什么樣的地址及詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11

最新評(píng)論

凭祥市| 略阳县| 和静县| 枝江市| 华坪县| 石嘴山市| 新巴尔虎右旗| 德庆县| 历史| 邢台县| 阿拉善左旗| 永泰县| 睢宁县| 聊城市| 宝应县| 玉环县| 陈巴尔虎旗| 靖江市| 阜新| 汉阴县| 姚安县| 民权县| 镇沅| 江北区| 彩票| 渝中区| 阳城县| 元氏县| 清远市| 阜新| 沁阳市| 阜城县| 扶绥县| 杨浦区| 花垣县| 阿坝| 海盐县| 定结县| 航空| 崇阳县| 会理县|