前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >解决gpt返回json Python没法解析的情况

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

作者头像
小小咸鱼YwY
发布于 2024-02-01 03:13:13
发布于 2024-02-01 03:13:13
28600
代码可运行
举报
文章被收录于专栏:python-爬虫python-爬虫
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用正则表达式爬取古诗文网站,边玩边学【python爬虫入门进阶】(09)
前面两篇文章我们介绍了正则表达式的基本语法以及一些简单的使用场景。还没有看的小伙伴赶紧看过来吧, 学好正则表达式,啥难匹配的内容都给我匹配上【python爬虫入门进阶】(07) 用正则表达式校验手机号,邮箱就是流弊【python爬虫入门进阶】(08) 花个几分钟就能学会的知识点为啥不学呢? 本文将正则表达式的应用进一步放大,用它来爬取古诗文网站的数据。在本文的学习中,请你暂时将xpath隐藏掉。
码农飞哥
2021/12/15
5210
用正则表达式爬取古诗文网站,边玩边学【python爬虫入门进阶】(09)
【Python之正则表达式与JSON】
在当今快速发展的技术领域,Python已经成为了许多开发者首选的编程语言之一。其简洁而强大的语法使其在各种领域都有着广泛的应用。本篇博客将引领你深入了解Python中正则表达式与JSON的强大组合,揭示它们如何协同工作,为开发者提供了解析和处理文本数据的高效方式。
老虎也淘气
2024/01/30
4190
还不会Python正则表达式?看这篇文章试试
今天写爬虫偶然想到了初学正则表达式时候,看过一篇文章非常不错。检索一下还真的找到了。 re模块 re.search 经常用match = re.search(pat, str)的形式。因为有可能匹配不
小小科
2018/05/03
5540
还不会Python正则表达式?看这篇文章试试
Python: 正则表达式实例透析
经常用match = re.search(pat, str)的形式。因为有可能匹配不到,所以re.search()后面一般用if statement。
用户2183996
2018/06/28
4870
python【第五篇】常用模块学习
a.定义:本质就是.py结尾的python文件,逻辑上组织python代码,实现某种功能。例:文件名test.py-->模块名test。
用户1432189
2019/09/12
1.1K0
python【第五篇】常用模块学习
re正则表格式
# coding=utf-8 # "正则表达式学习" import re # "match方法的工作方式是只有当被搜索字符串的开头匹配模式的时候它才能找到匹配对象" match = re.match(r'dog', 'dogsdf cat dog') print match.group() # "开头没有匹配cat,将返回None" match = re.match(r'cat', 'dog cat dog') print match # "使用re.search查找匹配任意位置,search方法不会
用户1733462
2018/06/01
6680
【Python基础】05、Python文
文件系统是OS用于明确磁盘或分区上的文件的方法和数据结构——即在磁盘上组织文件的方法
py3study
2020/01/10
1K0
【Python基础】05、Python文
Python3快速入门(七)——Pyth
re 模块提供 Perl 风格的正则表达式模式,使 Python 语言拥有全部的正则表达式功能。
py3study
2020/01/03
8630
Python正则re模块学习笔记
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
没有故事的陈师傅
2019/07/28
6270
Python爬虫系列:正则表达式(2)
常见形式为:r'text',即在字符串之前添加一个大写或小写的r。例如:r'[1-9]\d{5}'。
小Bob来啦
2021/07/29
4360
两天研习Python基础(九) 文本处理
字符转换例子: https://stackoverflow.com/questions/555705/character-translation-using-python-like-the-tr-command
王诗翔呀
2020/07/06
1.1K0
《手把手带你学爬虫──初级篇》第4课 正则表达式以及re库的用法
正则表达式,又称规则表达式,英文Regular Expression,常简写为regex、regexp或者RE;它通常被用来快速检索、替换那些符合某个正则表达式的文本。
GitOPEN
2019/01/29
1.1K0
深入理解Python正则表达式:解析、匹配和高级技巧
正则表达式是一种强大的文本处理工具,它允许你在文本中搜索、匹配和处理模式。Python中的re模块提供了对正则表达式的支持,本文将深入探讨Python正则表达式的工作原理、基本用法、高级技巧以及实际应用,帮助你更好地掌握这一强大的工具。
海拥
2023/09/19
2.6K0
深入理解Python正则表达式:解析、匹配和高级技巧
Python正则表达式,这一篇就够了!
之前我们讲解了 正则表达式 的起源、发展、流派、语法、引擎、优化等相关知识,今天我们主要来学习一下 正则表达式在 Python语言 中的应用!
全栈程序员站长
2022/08/23
2K0
Python正则表达式,这一篇就够了!
Python json中一直搞不清的load、loads、dump、dumps、eval
做接口测试的时候,有时候需要对字符串、json串进行一些转换,可是总是得花费一些时间,本质来说还是有可能是这几个方法的使用没有弄清楚。
虫无涯
2023/01/31
1.3K0
Python入门系列(八)日期时间、数学、json
Python中的日期本身不是数据类型,但我们可以导入一个名为datetime的模块,将日期作为日期对象使用。
用户10002156
2022/09/05
6150
python模块之re(正则表达式)
匹配模式 re.ASCII 同re.A,对应的内联标识为(?a),用于向后兼容。使元字符\w, \W, \b, \B, \d, \D, \s和\S仅匹配ASCII字符。该模式只在string模式下有意
枇杷李子橙橘柚
2019/05/26
1.2K0
四、正则表达式re模块 常用的匹配规则:Python 的 re 模块也可以直接用re.match(),re.search(),re.findall(),re.finditer(),re.sub()
什么是正则表达式 正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 给定的字符串是否符合正则表达式的过滤逻辑(“匹配”); 通过正则表达式,从文本字符串中获取我们想要的特定部分(“过滤”)。 常用的匹配规则: \w 匹配字母
酱紫安
2018/04/16
3.3K0
四、正则表达式re模块	常用的匹配规则:Python 的 re 模块也可以直接用re.match(),re.search(),re.findall(),re.finditer(),re.sub()
python 学习笔记(9)——Python 正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
my_sunshine
2020/10/15
6660
python re库-----学习(正则
#!/usr/bin/env python #-*- coding:UTF-8 -*- ##################################################### # Author: sunfx   xingrhce@163.com # Last modified:  2014/11/18 # Filename:  re.py # Q  Q  群:  236147801 #####################################################
py3study
2020/01/08
1.1K0
相关推荐
用正则表达式爬取古诗文网站,边玩边学【python爬虫入门进阶】(09)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验