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

python之json格式解析與轉換方式

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

python json格式解析與轉換 

使用Python標準庫: json 實現(xiàn)json格式字符串與Python對象的互轉。

但注意,只有有效的json格式字符串才能夠轉換為Python對象。

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

  • 字符串必須用雙引號
  • 在同一個對象中,所有的鍵必須是唯一的
  • 最后一個元素后面不應有逗號
  • 字符串中不應包含注釋

1、json格式字符串轉python類型

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

  • json.loads()
  • loads為'load string'的縮寫,用來解析json格式的字符串(該字符串要包含有效的json數(shù)據),返回python對象(列表或字典)
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)}')

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

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

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

import json

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

2、python對象轉為json格式字符串

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

  • json.dumps
  • dumps為'dump string'的縮寫,用于將python對象轉為json格式的字符串
import json

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

# 轉為json對象
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 對象轉換為json格式,并將結果寫入文件,它需要一個文件對象作為輸出目標
import json

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

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

3、json轉DataFrame

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

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

或直接讀取json文件

import pandas as pd

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

4、DataFrame轉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'可將時間戳轉換為以秒為單位的時間戳

部分輸出結果如下,

同時可以使用orient(其參數(shù)可以?。簊plit、records、index、columns、values、table)參數(shù)改變輸出數(shù)據結構,大家可以嘗試一下各個參數(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')

部分輸出結果如下,輸出是一個 JSON 對象數(shù)組,其中每個對象對應 DataFrame 的一行。

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

那就需要在轉為json之前,先把時間格式轉為字符串格式,再轉為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')

部分輸出結果為,

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

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

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

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

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

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

    Python腳本/代碼的幾種常見運行方式

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

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

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

    python中的django是做什么的

    在本篇文章里小編給大家整理了關于python中的django作用以及相關基礎知識點,需要的朋友們學習下。
    2020-07-07
  • Python面向對象基礎入門之設置對象屬性

    Python面向對象基礎入門之設置對象屬性

    這篇文章主要給大家介紹了關于Python面向對象基礎入門之設置對象屬性的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • flask中使用SQLAlchemy進行輔助開發(fā)的代碼

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

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

    深人了解Python上下文管理器

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

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

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

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

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

最新評論

镇康县| 安庆市| 普兰店市| 宾川县| 奉贤区| 即墨市| 泰顺县| 新蔡县| 东光县| 北川| 诏安县| 高密市| 阿城市| 邢台县| 乳源| 武强县| 泾川县| 贵港市| 平和县| 玛纳斯县| 万山特区| 库车县| 定西市| 茌平县| 慈利县| 南雄市| 清河县| 陆良县| 辽阳县| 天等县| 二连浩特市| 贵溪市| 囊谦县| 静安区| 电白县| 连山| 舒城县| 姚安县| 孝义市| 光泽县| 万州区|