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

python之json格式解析與轉(zhuǎn)換方式

 更新時(shí)間:2024年09月10日 08:52:41   作者:煮雨小筑  
使用Python的內(nèi)置json庫可以實(shí)現(xiàn)JSON和Python對(duì)象的互相轉(zhuǎn)換,有效的JSON格式字符串是指使用雙引號(hào)、鍵唯一且沒有尾隨逗號(hào)的字符串,json.loads()用于將JSON字符串轉(zhuǎn)換為Python對(duì)象,json.dumps()則將Python對(duì)象轉(zhuǎn)化為JSON字符串

python json格式解析與轉(zhuǎn)換 

使用Python標(biāo)準(zhǔn)庫: json 實(shí)現(xiàn)json格式字符串與Python對(duì)象的互轉(zhuǎn)。

但注意,只有有效的json格式字符串才能夠轉(zhuǎn)換為Python對(duì)象。

OK,問題來了,什么叫有效的json格式字符串?

  • 字符串必須用雙引號(hào)
  • 在同一個(gè)對(duì)象中,所有的鍵必須是唯一的
  • 最后一個(gè)元素后面不應(yīng)有逗號(hào)
  • 字符串中不應(yīng)包含注釋

1、json格式字符串轉(zhuǎn)python類型

主要用到兩個(gè)函數(shù):

  • json.loads()
  • loads為'load string'的縮寫,用來解析json格式的字符串(該字符串要包含有效的json數(shù)據(jù)),返回python對(duì)象(列表或字典)
import json

# json格式的字符串  可解析為python列表
json_data_list = '[{"name": ["Alice", "Bob"], "age": [25, 30]}]'
# json格式的字符串  可解析為python字典
json_data_dict = '{"name": ["Alice", "Bob"], "age": [25, 30]}'

# 解析json格式的字符串
parse_json_data_list = json.loads(json_data_list)
parse_json_data_dict = json.loads(json_data_dict)

print(f'json_data_list的類型為: {type(json_data_list)}; parse_json_data_list的類型為: {type(parse_json_data_list)}')
print(f'json_data_dict的類型為: {type(json_data_dict)}; parse_json_data_dict的類型為: {type(parse_json_data_dict)}')

# 轉(zhuǎn)為python類型之后,比如轉(zhuǎn)為python字典,我們就可以使用dict相關(guān)方法進(jìn)行數(shù)據(jù)的提取等操作

  • json.load()
  • load用于從一個(gè)文件中讀取json數(shù)據(jù),接收一個(gè)文件對(duì)象,返回一個(gè)python對(duì)象

如讀取txt文件中存儲(chǔ)的字符串形式的json數(shù)據(jù),如下圖

import json

# open函數(shù)返回一個(gè)文件對(duì)象,并將其賦給f
with open(r'test_json.txt', 'r') as f:
    json_content = json.load(f)
    print(json_content)
    print(type(json_content))

2、python對(duì)象轉(zhuǎn)為json格式字符串

主要用到兩個(gè)函數(shù):

  • json.dumps
  • dumps為'dump string'的縮寫,用于將python對(duì)象轉(zhuǎn)為json格式的字符串
import json

# python對(duì)象
data_list = [1, 2, 3]
data_dict = {"name": ["Alice", "Bob"], "age": [25, 30]}

# 轉(zhuǎn)為json對(duì)象
json_data_list = json.dumps(data_list)
json_data_dict = json.dumps(data_dict)

print(f'data_list的類型為: {type(data_list)}; json_data_list的類型為: {type(json_data_list)}')
print(f'data_dict的類型為: {type(data_dict)}; json_data_dict的類型為: {type(json_data_dict)}')

  • json.dump
  • dump用于將 python 對(duì)象轉(zhuǎn)換為json格式,并將結(jié)果寫入文件,它需要一個(gè)文件對(duì)象作為輸出目標(biāo)
import json

data_dict = {"name": ["Alice", "Bob"], "age": [25, 30]}

# 創(chuàng)建一個(gè)test_json.json文件(w: 文件不存在則創(chuàng)建)
with open(r'test_json.json', 'w') as f:
    # indent: 該參數(shù)用來控制縮進(jìn) 用來美化json使其有清晰的層次結(jié)構(gòu)
    json.dump(data_dict, f, indent=4)

3、json轉(zhuǎn)DataFrame

直接使用pd.read_json函數(shù)讀取json格式字符串、json文件,然后轉(zhuǎn)為DataFrame

import pandas as pd
from io import StringIO
 
# 讀取JSON數(shù)據(jù)為DataFrame對(duì)象
json_data = '{"name": ["Alice", "Bob"], "age": [25, 30]}'
# read_json 函數(shù)通常期望接收一個(gè)文件路徑或文件對(duì)象,而不是字符串,
# 所以這里使用了StringIO 來將字符串json_data 轉(zhuǎn)換成一個(gè)類似文件的對(duì)象,這樣read_json 就可以從中讀取數(shù)據(jù)
df = pd.read_json(StringIO(json_data))
df

或直接讀取json文件

import pandas as pd

data = pd.read_json(r'test_json.json')
data

4、DataFrame轉(zhuǎn)json

import pandas as pd

data = pd.DataFrame(
    {
        'value': range(10),
        'time': pd.date_range('2024-01-01', freq='D', periods=10),
        'flag': list('abcdefghij')
    }
)

data.to_json('test_to_json.json', indent=4)
# data.to_json('test_to_json.json', indent=4, date_unit='s') date_unit='s'可將時(shí)間戳轉(zhuǎn)換為以秒為單位的時(shí)間戳

部分輸出結(jié)果如下,

同時(shí)可以使用orient(其參數(shù)可以取:split、records、index、columns、values、table)參數(shù)改變輸出數(shù)據(jù)結(jié)構(gòu),大家可以嘗試一下各個(gè)參數(shù)取值出來的效果,下面展示orient='records'的輸出效果。

import pandas as pd

data = pd.DataFrame(
    {
        'value': range(10),
        'time': pd.date_range('2024-01-01', freq='D', periods=10),
        'flag': list('abcdefghij')
    }
)

data.to_json('test_to_json.json', indent=4, orient='records')

部分輸出結(jié)果如下,輸出是一個(gè) JSON 對(duì)象數(shù)組,其中每個(gè)對(duì)象對(duì)應(yīng) DataFrame 的一行。

同時(shí)注意到,時(shí)間格式在轉(zhuǎn)為json之后,變成了時(shí)間戳,怎么保留原來的時(shí)間格式呢?

那就需要在轉(zhuǎn)為json之前,先把時(shí)間格式轉(zhuǎn)為字符串格式,再轉(zhuǎn)為json

import pandas as pd
 
data = pd.DataFrame(
    {
        'value': range(10),
        'time': pd.date_range('2024-01-01', freq='D', periods=10),
        'flag': list('abcdefghij')
    }
)
 
data['time'] = data['time'].astype(str)
 
data.to_json('test_to_json.json', indent=4, orient='records')

部分輸出結(jié)果為,

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用Python繪畫雙擺操作分享

    利用Python繪畫雙擺操作分享

    這篇文章主要介紹了利用Python畫雙擺,繪畫雙擺的過程主要包括以下步驟,雙擺問題、運(yùn)動(dòng)過程及公式推導(dǎo)過程,下文詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-04-04
  • 使用Python進(jìn)行物聯(lián)網(wǎng)設(shè)備的控制與數(shù)據(jù)收集

    使用Python進(jìn)行物聯(lián)網(wǎng)設(shè)備的控制與數(shù)據(jù)收集

    Python作為一種高效且易于學(xué)習(xí)的編程語言,已經(jīng)成為開發(fā)物聯(lián)網(wǎng)應(yīng)用的首選語言之一,本文將探討如何使用Python進(jìn)行物聯(lián)網(wǎng)設(shè)備的控制與數(shù)據(jù)收集,并提供相應(yīng)的代碼示例,需要的朋友可以參考下
    2024-05-05
  • 使用pandas 將DataFrame轉(zhuǎn)化成dict

    使用pandas 將DataFrame轉(zhuǎn)化成dict

    今天小編就為大家分享一篇使用pandas 將DataFrame轉(zhuǎn)化成dict,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python OpenCV圖像的位運(yùn)算操作

    Python OpenCV圖像的位運(yùn)算操作

    位運(yùn)算是計(jì)算機(jī)科學(xué)中一種基礎(chǔ)而高效的操作,它直接對(duì)二進(jìn)制位進(jìn)行處理,在圖像處理中,位運(yùn)算也是一種重要的技術(shù),尤其在圖像的合成、分離、掩模處理等場景中,常常用到位運(yùn)算,本文將介紹圖像處理中的常見位運(yùn)算操作,需要的朋友可以參考下
    2024-12-12
  • Python django框架 web端視頻加密的實(shí)例詳解

    Python django框架 web端視頻加密的實(shí)例詳解

    這篇文章主要介紹了Python django框架 web端視頻加密,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python 星號(hào)(*)的多種用途

    python 星號(hào)(*)的多種用途

    這篇文章主要介紹了python 星號(hào)(*)的多種用途,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-09-09
  • 詳細(xì)介紹python類及類的用法

    詳細(xì)介紹python類及類的用法

    前面我們介紹了類的創(chuàng)建及面向?qū)ο蟮娜筇匦?本篇將詳細(xì)介紹Python 類的成員,成員修飾符,類的特殊成員.需要的朋友可以參考下
    2021-05-05
  • 如何解決Python:報(bào)錯(cuò)[Errno 2]No such file or directory問題

    如何解決Python:報(bào)錯(cuò)[Errno 2]No such file or&nb

    介紹了Python文件讀取操作時(shí)常見的錯(cuò)誤原因及解決方法,主要錯(cuò)誤原因包括路徑拼寫錯(cuò)誤、工作目錄與相對(duì)路徑不匹配以及文件不存在,解決方法有使用絕對(duì)路徑和動(dòng)態(tài)獲取腳本路徑,其他注意事項(xiàng)包括驗(yàn)證文件路徑與名稱、理解工作目錄與相對(duì)路徑
    2025-02-02
  • python中強(qiáng)制關(guān)閉線程與協(xié)程與進(jìn)程方法

    python中強(qiáng)制關(guān)閉線程與協(xié)程與進(jìn)程方法

    python使用中多線程、多進(jìn)程、多協(xié)程使用是比較常見的。那么如果在多線程等的使用,我們這個(gè)時(shí)候我們想從外部強(qiáng)制殺掉該線程請(qǐng)問如何操作?這篇文章帶你介紹,感興趣的同學(xué)可以參考閱讀
    2023-03-03
  • PyQt5每天必學(xué)之彈出消息框

    PyQt5每天必學(xué)之彈出消息框

    這篇文章主要為大家詳細(xì)介紹了PyQt5每天必學(xué)之彈出消息框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04

最新評(píng)論