欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python讀寫JSON文件的操作詳解

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

JSON

JSON 起源

JSON 全稱 JavaScript Object Notation 。是處理對象文字語法的 JavaScript 編程語言的一個子集。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 帶有一個內(nèi)置包 json,用于對 JSON 數(shù)據(jù)進(jìn)行編碼和解碼。

引用方式。

import json

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

序列化 JSON

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

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

簡單的序列化示例

創(chuàng)建一個簡單的數(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 對象。

JSONPython
objectdict
arraylist
stringstr
number(整數(shù))int
number(浮點數(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 的錯誤就需要自定義編碼和解碼了。

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):
		'''
		將此類的實例轉(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的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • pygame游戲之旅 創(chuàng)建游戲窗口界面

    pygame游戲之旅 創(chuàng)建游戲窗口界面

    這篇文章主要為大家詳細(xì)介紹了pygame游戲之旅,教大家如何創(chuàng)建游戲窗口界面,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • numpy和tensorflow中的各種乘法(點乘和矩陣乘)

    numpy和tensorflow中的各種乘法(點乘和矩陣乘)

    這篇文章主要介紹了numpy和tensorflow中的各種乘法(點乘和矩陣乘),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python辦公自動化SFTP詳解

    Python辦公自動化SFTP詳解

    這篇文章主要介紹了Python辦公自動化SFTP詳解,sftp和ftp的區(qū)別在安全通道,使用的協(xié)議,鏈接方式,安全性等方面都有不同,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-08-08
  • 如何使用Django默認(rèn)的Auth權(quán)限管理系統(tǒng)

    如何使用Django默認(rèn)的Auth權(quán)限管理系統(tǒng)

    本文主要介紹了如何使用Django默認(rèn)的Auth權(quán)限管理系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Anaconda最新版2023安裝教程Spyder安裝教程圖文詳解

    Anaconda最新版2023安裝教程Spyder安裝教程圖文詳解

    這篇文章主要介紹了Anaconda最新版2023安裝教程Spyder安裝教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Pytorch之parameters的使用

    Pytorch之parameters的使用

    今天小編就為大家分享一篇Pytorch之parameters的使用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python Numpy 高效的運算工具詳解

    Python Numpy 高效的運算工具詳解

    這篇文章主要介紹了Python numpy矩陣處理運算工具用法匯總,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-10-10
  • Django框架cookie和session方法及參數(shù)設(shè)置

    Django框架cookie和session方法及參數(shù)設(shè)置

    這篇文章主要為大家介紹了Django框架cookie和session參數(shù)設(shè)置及介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Python讀取mp3中ID3信息的方法

    Python讀取mp3中ID3信息的方法

    這篇文章主要介紹了Python讀取mp3中ID3信息的方法,實例分析了Python中mutagen包的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • Python創(chuàng)建7種不同的文件格式的方法總結(jié)

    Python創(chuàng)建7種不同的文件格式的方法總結(jié)

    今天的這篇文章呢,小編來介紹一下如何通過Python來創(chuàng)建各種形式的文件,這里包括了:文本文件、CSV文件、Excel文件、壓縮文件、XML文件、JSON文件和PDF文件,需要的可以參考一下
    2023-01-01

最新評論