首页 > 编程语言 >解决gpt返回json Python没法解析的情况

解决gpt返回json Python没法解析的情况

时间:2024-01-31 09:46:46浏览次数:23  
标签:return Python replace re json str gpt match

import re
import json
def replace_newlines(match):
    # 在匹配的字符串中替换 \n 和 \r
    return match.group(0).replace('\n', '\\n').replace('\r', '\\r')

def clean_json_str(json_str: str) -> str:
    """
    生成的json格式可能不标准,先进行替换处理
    :param json_str:
    :return:
    """
    json_str = json_str.replace("None","null")

    # 去除代码块符号```
    #json字符串中None换成null
    json_str = json_str.replace("None","null")

    match = re.search(r'```json(.*?)```', json_str, re.DOTALL)
    if match:
        json_str = match.group(1)
    match = re.search(r'```(.*?)```', json_str, re.DOTALL)
    if match:
        json_str = match.group(1)
    # 在匹配的字符串中替换 \n 和 \r
    json_str = re.sub( r'("(?:\\.|[^"\\])*")', replace_newlines, json_str)
    # 移除键值对后面多余的逗号
    json_str = re.sub(r',\s*}', '}', json_str)
    json_str = re.sub(r',\s*]', ']', json_str)
    # 修复缺少的逗号
    json_str = re.sub(r'\"\s+\"', '\",\"', json_str)
    # True、False替换
    json_str = json_str.replace("True","true")
    json_str = json_str.replace("False","false")
    return json_str

def clean_and_load_json(json_str) -> dict:
    """
    不标准json字符串修正后返回dict对象
    :param json_str:
    :return: dict对象,解析失败返回{}
    """
    try:
        json_str = clean_json_str(json_str)
        return json.loads(json_str)
    except Exception as e:
        print(e)

标签:return,Python,replace,re,json,str,gpt,match
From: https://www.cnblogs.com/pythonywy/p/17998565

相关文章

  • Python工具箱系列(四十九)
    使用PIL进行图片格式与尺寸转换现实世界中,图片是经常需要处理的二进制文件类型。从计算机发展的历史来看,图片的格式丰富多彩,但大体来说分成两类:•位图格式•矢量格式矢量格式如svg等,能够随意放大缩小而不变形,原因在于矢量格式描述了如何产生图形的方法。而位图格式(例如BMP/J......
  • 17个工作必备的Python自动化代码
    您是否厌倦了在日常工作中做那些重复性的任务?简单但多功能的Python脚本可以解决您的问题。 我们将通过上下两个篇章为您介绍17个能够自动执行各种任务并提高工作效率Python脚本及其代码。无论您是开发人员、数据分析师,还是只是希望简化工作流程的人,这些脚本都能满足您的需求。 ......
  • python selenium i 不再自动退出
    官网https://chromedriver.chromium.org/home  chrome版本  版本109.0.5414.120(正式版本)(64位) driver 版本indexof/109.0.5414.74/  ##导入selenium#fromseleniumimportwebdriver##选择谷歌浏览器#driver_path=r"C:\ProgramFiles\Googl......
  • Centos安装Python3.8.2-最新稳定版
    注*以下安装环境为centos,默认root权限下进行的安装升级宝塔自带的python2.7.5到3.8.2一.安装基础库1.更新yum源yum-yupdate2.安装EPEL扩展,PIP安装依赖epel-release库yum-yinstallepel-release当遇到SSL问题‘pipisconfiguredwithlocationsthatrequ......
  • Fatsjson1245漏洞复现
    Fastjson1245利用简介这是一个利用fastjson1245反序列化漏洞的靶场。漏洞复现点击登录,进入登录页面,进行用户名和密码的输入。在bp中就可以发现登录使用的是json格式的post请求。发送到Repeater中,也可以看到请求头中Content-Type为application/json。使用{"@......
  • Python下的三维建模和可视化
    本文介绍基于AnyCADRapidPy三维图形平台开发Python的三维应用1准备工作1.1安装vc_resit2022在Windows下,AnyCADRapidSDK依赖VistualC++运行时库,64位版本需要在客户机上安装vc_redist.x64.exe微软官方下载地址:x64:vc_redist.x64.exe1.2安装Python3.12:::w......
  • python解密带密码的pdf文件
    ##coding:utf-8###用来存储一些通用模块fromPyPDF2importPdfReader#pdf的读取方法fromPyPDF2importPdfWriter#pdf的写入方法fromCrypto.CipherimportAES#高加密的方法,要引入不然会报错defget_reader(filename,password):#读取pdf的方法(自定义......
  • anaconda+jupyter书写python简简简简简易安装教程,浏览器编写执行Python程序
    anaconda+jupyter书写python简简简简简易安装教程,浏览器编写执行Python程序目录 1、安装anaconda2、打开JupyterNotebook3、创立ipynb文件编写python代码 4、导出python文件(.py)1、安装anaconda下载地址:www.anaconda.com点击Download会下载一个大约600M的安装包,......
  • python 一个能统计txt文件的每个单词出现次数的python程序; 统计txt文件里每个汉字出
    输出的时候排列顺序是从多到少,需要去除txt中的特殊符号,注意是英文txt文件用来自制词汇包的hhhimportrefromcollectionsimportCounterdefcount_words(file_path):#读取文本文件内容withopen(file_path,'r',encoding='utf-8')asfile:text=file.read......
  • python自定义装饰器
    被装饰函数带参数或不带参数#coding=utf8#自定义装饰器函数,需使用嵌套函数importtimedefdecorator_foo(func):definner_func(*args,**kwargs):start_time=time.time()func(*args,**kwargs)print('runfunccost{}s'.format(time.......