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

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

 更新時(shí)間:2024年09月10日 08:52:41   作者:煮雨小筑  
使用Python的內(nèi)置json庫(kù)可以實(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)庫(kù): json 實(shí)現(xiàn)json格式字符串與Python對(duì)象的互轉(zhuǎn)。

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

OK,問(wèn)題來(lái)了,什么叫有效的json格式字符串?

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

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

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

  • json.loads()
  • loads為'load string'的縮寫,用來(lái)解析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ù)用來(lái)控制縮進(jìn) 用來(lái)美化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 來(lái)將字符串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ù)可以?。簊plit、records、index、columns、values、table)參數(shù)改變輸出數(shù)據(jù)結(jié)構(gòu),大家可以嘗試一下各個(gè)參數(shù)取值出來(lái)的效果,下面展示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í)間戳,怎么保留原來(lái)的時(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重新加載模塊的實(shí)現(xiàn)方法

    Python重新加載模塊的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇Python重新加載模塊的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 舉例講解Python的Tornado框架實(shí)現(xiàn)數(shù)據(jù)可視化的教程

    舉例講解Python的Tornado框架實(shí)現(xiàn)數(shù)據(jù)可視化的教程

    這篇文章主要介紹了舉例講解Python的Tornado框架實(shí)現(xiàn)數(shù)據(jù)可視化的教程,Tornado是一個(gè)異步的高人氣開發(fā)框架,需要的朋友可以參考下
    2015-05-05
  • Python腳本/代碼的幾種常見運(yùn)行方式

    Python腳本/代碼的幾種常見運(yùn)行方式

    我們知道,python腳本或者說(shuō)python程序其實(shí)是一個(gè)包含了python代碼的文件,通過(guò)運(yùn)行python代碼,我們可以驗(yàn)證腳本/程序是否按照我們的期望執(zhí)行,在python中,有多種方式來(lái)運(yùn)行腳本或程序,取決于小伙伴們的需求,接下來(lái)小編將介紹幾種常見的 python 代碼運(yùn)行方式
    2023-10-10
  • Mysql數(shù)據(jù)庫(kù)反向生成Django里面的models指令方式

    Mysql數(shù)據(jù)庫(kù)反向生成Django里面的models指令方式

    這篇文章主要介紹了Mysql數(shù)據(jù)庫(kù)反向生成Django里面的models指令方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-05-05
  • python中的django是做什么的

    python中的django是做什么的

    在本篇文章里小編給大家整理了關(guān)于python中的django作用以及相關(guān)基礎(chǔ)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2020-07-07
  • Python面向?qū)ο蠡A(chǔ)入門之設(shè)置對(duì)象屬性

    Python面向?qū)ο蠡A(chǔ)入門之設(shè)置對(duì)象屬性

    這篇文章主要給大家介紹了關(guān)于Python面向?qū)ο蠡A(chǔ)入門之設(shè)置對(duì)象屬性的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • flask中使用SQLAlchemy進(jìn)行輔助開發(fā)的代碼

    flask中使用SQLAlchemy進(jìn)行輔助開發(fā)的代碼

    在Web.py, Django, Flask, Tornado里,自帶的ORM功能比較缺乏,推薦大家使用SQLAlchemy來(lái)輔助開發(fā)
    2013-02-02
  • 深人了解Python上下文管理器

    深人了解Python上下文管理器

    這篇文章主要為大家介紹了Python上下文管理器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助<BR>
    2021-12-12
  • Python與MATLAB混合編程全方位解析

    Python與MATLAB混合編程全方位解析

    這篇文章主要介紹了Python與MATLAB混合編程全方位解析,在科學(xué)計(jì)算領(lǐng)域,MATLAB憑借矩陣運(yùn)算鶴立工程仿真,Python則依靠開源生態(tài)的人海戰(zhàn)術(shù)橫掃AI與數(shù)據(jù)科學(xué),這二者疊加起來(lái)則可提升研發(fā)效率,需要的朋友可以參考下
    2026-02-02
  • python爬蟲模塊URL管理器模塊用法解析

    python爬蟲模塊URL管理器模塊用法解析

    這篇文章主要介紹了python爬蟲模塊URL管理器模塊用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

扶绥县| 仁寿县| 天柱县| 麻栗坡县| 襄樊市| 宜黄县| 菏泽市| 陆良县| 丰城市| 肃宁县| 固始县| 万载县| 北京市| 安丘市| 珠海市| 洛宁县| 密云县| 繁峙县| 益阳市| 公主岭市| 手游| 友谊县| 金平| 张家港市| 谢通门县| 得荣县| 双流县| 镇雄县| 宜城市| 湖南省| 织金县| 凤翔县| 瑞安市| 海口市| 三门县| 长寿区| 卓尼县| 霍林郭勒市| 巧家县| 延安市| 鹤山市|