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

python中實現json-repair快速修復損壞的JSON文件

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

一、背景

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

二、安裝與參數

此庫來完全替換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開頭,以```結尾, 或者少引號等各種情況

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它已經為您驗證了 JSON 是否有效,
如果您仍然想這樣做,那么請skip_json_loads=True按照下面部分所述添加到調用中

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ā)現這個庫因為正在使用而太慢,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 庫以避免任何外部依賴,以便任何人都可以使用它,無論他們的堆棧如何。

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

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

相關文章

  • Pandas實現Excel文件讀取,增刪,打開,保存操作

    Pandas實現Excel文件讀取,增刪,打開,保存操作

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

    conda安裝tensorflow和conda常用命令小結

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

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

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

    python能自學嗎

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

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

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

    使用Python解析JSON的實現示例

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

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

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

    Scrapy-Redis之RedisSpider與RedisCrawlSpider詳解

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

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

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

    pandas 選擇某幾列的方法

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

最新評論

铁岭县| 太和县| 武威市| 贵阳市| 阿勒泰市| 云安县| 扎兰屯市| 江阴市| 新民市| 江陵县| 迁西县| 永胜县| 当涂县| 咸阳市| 宁化县| 宝鸡市| 淮南市| 平原县| 湘潭县| 赞皇县| 赣榆县| 宁波市| 和龙市| 榕江县| 阿坝县| 东阿县| 福州市| 吴桥县| 伊通| 从化市| 宜昌市| 台湾省| 兖州市| 深泽县| 左云县| 崇州市| 新绛县| 菏泽市| 柏乡县| 遂昌县| 淮北市|