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

python中實現(xiàn)json-repair快速修復(fù)損壞的JSON文件

 更新時間:2025年11月25日 09:26:44   作者:風(fēng)華浪浪  
本文主要介紹了python中實現(xiàn)json-repair快速修復(fù)損壞的JSON文件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、背景

  • 本人場景:大模型提示詞要求返回json格式類型,但是卻```json開頭,以```結(jié)尾, 或者少引號等各種情況
  • 修復(fù) JSON 中的語法錯誤
    缺少引號、錯誤放置的逗號、未轉(zhuǎn)義的字符以及不完整的鍵值對。
    缺少引號、格式不正確的值(true、false、null)以及修復(fù)損壞的鍵值結(jié)構(gòu)。
  • 修復(fù)格式錯誤的 JSON 數(shù)組和對象
    通過添加必要的元素(例如,逗號、括號)或默認值(null、“”)導(dǎo)致數(shù)組/對象不完整或損壞。
    該庫可以處理包含額外非 JSON 字符(如注釋或位置不正確的字符)的 JSON,并在保持有效結(jié)構(gòu)的同時清理它們。
  • 自動完成缺失的 JSON 值
    自動使用合理的默認值(如空字符串或 null)完成 JSON 字段中缺失的值,確保有效性。

二、安裝與參數(shù)

此庫來完全替換json.loads()等

pip install json-repair
json_repair -h
usage: json_repair [-h] [-i] [-o TARGET] [--ensure_ascii] [--indent INDENT] [filename]

Repair and parse JSON files.

positional arguments:
  filename              The JSON file to repair (if omitted, reads from stdin)

options:
  -h, --help            show this help message and exit
  -i, --inline          Replace the file inline instead of returning the output to stdout
  -o TARGET, --output TARGET
                        If specified, the output will be written to TARGET filename instead of stdout
  --ensure_ascii        Pass ensure_ascii=True to json.dumps()
  --indent INDENT       Number of spaces for indentation (Default 2)

三、使用示例

少引號

from json_repair import repair_json, loads

json_string = repair_json("{'test_chinese_ascii':'統(tǒng)一碼, }", ensure_ascii=False)
print(json_string)

{"test_chinese_ascii": "統(tǒng)一碼"}

json_data = loads(json_string)
print(type(json_data), json_data)

<class 'dict'> {'test_chinese_ascii': '統(tǒng)一碼'}

有時大模型提示詞說返回jison格式類型,但是卻```json開頭,以```結(jié)尾, 或者少引號等各種情況

json_string = "```json{'username': 'zhangsan', 'age': 13, 'phone': 13312345678, 'description': 'hello world'}```"
repair_data = repair_json(json_string)
print(repair_data)

{"username": "zhangsan", "age": 13, "phone": 13312345678, "description": "hello world"}

json_data = loads(json_string)
print(type(json_data), json_data)

<class 'dict'> {'username': 'zhangsan', 'age': 13, 'phone': 13312345678, 'description': 'hello world'}

處理報錯 json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
序列化報錯

import json
json_string = "{'start_row': 0, 'end_row': 0, 'env': 0, 'now': 0}"
json_data = json.loads(json_string)
print(json_data)

序列化正確

json_string = "{'start_row': 0, 'end_row': 0, 'env': 0, 'now': 0}"
json_data = loads(json_string)
print(type(json_data), json_data)

四、注意

避免這種反模式
這是很浪費的,因為json_repair它已經(jīng)為您驗證了 JSON 是否有效,
如果您仍然想這樣做,那么請skip_json_loads=True按照下面部分所述添加到調(diào)用中

obj = {}
try:
    obj = json.loads(string)
except json.JSONDecodeError as e:
    obj = json_repair.loads(string)
    ...

使用中文字符需要添加ensure_ascii=False

repair_json("{'test_chinese_ascii':'統(tǒng)一碼'}")
{"test_chinese_ascii": "\u7edf\u4e00\u7801"}
repair_json("{'test_chinese_ascii':'統(tǒng)一碼'}", ensure_ascii=False)
{"test_chinese_ascii": "統(tǒng)一碼"}

性能注意事項
如果你發(fā)現(xiàn)這個庫因為正在使用而太慢,json.loads()你可以通過傳遞skip_json_loads=True給來跳過它repair_json

from json_repair import repair_json

good_json_string = repair_json(bad_json_string, skip_json_loads=True)

我選擇不使用任何快速 json 庫以避免任何外部依賴,以便任何人都可以使用它,無論他們的堆棧如何。

設(shè)置return_objects=True總是會更快,因為解析器已經(jīng)返回一個對象,并且它沒有將該對象序列化為 JSON
skip_json_loads只有當(dāng)你 100% 確定該字符串不是有效的 JSON 時才會更快
如果您在轉(zhuǎn)義時遇到問題,請將字符串作為**原始字**符串傳遞,例如:r"string with escaping\""

到此這篇關(guān)于python中實現(xiàn)json-repair快速修復(fù)損壞的JSON文件的文章就介紹到這了,更多相關(guān)python json-repair修復(fù)損壞JSON文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pandas實現(xiàn)Excel文件讀取,增刪,打開,保存操作

    Pandas實現(xiàn)Excel文件讀取,增刪,打開,保存操作

    Pandas?是一種基于?NumPy?的開源數(shù)據(jù)分析工具,用于處理和分析大量數(shù)據(jù)。本文將通過Pandas實現(xiàn)對Excel文件進行讀取、增刪、打開、保存等操作,需要的可以參考一下
    2023-04-04
  • conda安裝tensorflow和conda常用命令小結(jié)

    conda安裝tensorflow和conda常用命令小結(jié)

    這篇文章主要介紹了conda安裝tensorflow和conda常用命令小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 使用K.function()調(diào)試keras操作

    使用K.function()調(diào)試keras操作

    這篇文章主要介紹了使用K.function()調(diào)試keras操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python能自學(xué)嗎

    python能自學(xué)嗎

    在本篇文章里小編給大家整理了關(guān)于python如何自學(xué)的相關(guān)理論性文章,有需要的朋友們可以參考下。
    2020-06-06
  • Python常用的文件及文件路徑、目錄操作方法匯總介紹

    Python常用的文件及文件路徑、目錄操作方法匯總介紹

    這篇文章主要介紹了Python常用的文件及文件路徑、目錄操作方法匯總介紹,本文集合了最常用的一些文件和目錄操作函數(shù),并一一介紹它們的作用,需要的朋友可以參考下
    2015-05-05
  • 使用Python解析JSON的實現(xiàn)示例

    使用Python解析JSON的實現(xiàn)示例

    本文主要介紹了使用Python解析JSON的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 解讀torch.cuda.amp自動混合精度訓(xùn)練之節(jié)省顯存并加快推理速度

    解讀torch.cuda.amp自動混合精度訓(xùn)練之節(jié)省顯存并加快推理速度

    這篇文章主要介紹了torch.cuda.amp自動混合精度訓(xùn)練之節(jié)省顯存并加快推理速度問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Scrapy-Redis之RedisSpider與RedisCrawlSpider詳解

    Scrapy-Redis之RedisSpider與RedisCrawlSpider詳解

    這篇文章主要介紹了Scrapy-Redis之RedisSpider與RedisCrawlSpider詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Python畫圖小案例之小雪人超詳細源碼注釋

    Python畫圖小案例之小雪人超詳細源碼注釋

    在看了很多Python教程之后,覺得是時候做點什么小項目來練練手了,于是想來想去,用python寫了一個小雪人,代碼注釋無比詳細清楚,快來看看吧
    2021-09-09
  • pandas 選擇某幾列的方法

    pandas 選擇某幾列的方法

    今天小編就為大家分享一篇pandas 選擇某幾列的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論

特克斯县| 邻水| 连云港市| 南昌县| 观塘区| 宁国市| 长春市| 乌拉特中旗| 崇阳县| 乐昌市| 内黄县| 陕西省| 陕西省| 红河县| 南陵县| 同仁县| 巫山县| 山西省| 普宁市| 轮台县| 龙泉市| 布拖县| 鞍山市| 甘肃省| 双鸭山市| 梁平县| 庆城县| 山东| 临汾市| 洪湖市| 分宜县| 夏邑县| 周口市| 汾西县| 武穴市| 都安| 绥芬河市| 鄯善县| 郴州市| 广元市| 元谋县|