如何将特定的引号替换为撇号?

How replace specific quotation marks into apostrophes?

提问人:french_fries 提问时间:9/18/2023 更新时间:9/18/2023 访问量:58

问:

我的 AI 模型生成以下字符串:

'{"name": "hammer 1.5"", "brand": "Eurosteel"}' 

我想用它变成字典。但这是不可能的,因为名称键的值为“锤子 1.5”。所以我想把我的字符串变成这个字符串:json.loads

'{'name': 'hammer 1.5"', 'brand': 'Eurosteel'}' 

我该怎么做?我想用函数来做它,以便能够将其应用于所有类似的情况。

附言 另一种选择是在“:

'{"name": "hammer 1.5\"", "brand": "Eurosteel"}' 
json python-3.x 字符串

评论

7赞 quamrana 9/18/2023
您应该尝试让您生成正确的 ,或者(可能更好)以不同的格式生成数据。你不想摆弄引号,因为最终会出现一个你无法处理的极端情况。"AI model"json
0赞 french_fries 9/18/2023
@quamrana,对生成的结果进行后处理比无休止地尝试提示并希望得到最好的结果更容易。AI 模型是不可预测的。一个提示可以很好地用于某些示例,而不适用于另一个示例
0赞 quamrana 9/18/2023
您是否要求格式化的数据?我会选择不同的格式。json
0赞 french_fries 9/18/2023
@quamrana是的。我也尝试了 YAML,但似乎并没有更好。我需要JSON格式的结果,因为我要求模型从大量数据中提取规范
4赞 Tim Roberts 9/18/2023
更容易进行后期处理——你错了。生成此材料的处理器已损坏。它正在生成无效数据。谁知道下一个搞砸了会是什么?正确的工程答案是修理你的发电机,而不是试图猜测它接下来可能产生的垃圾。

答:

0赞 Reilas 9/18/2023 #1

"...我想把它变成字典......

...我想用函数来做它,以便能够将其应用于所有类似的情况。..."

使用正则表达式捕获值。

请注意,如果该值包含 或 ,则此模式将失败。","}

"(.+?)": "(.+?)"[,}]

下面是一个示例

import re
s = '{"name": "hammer 1.5"", "brand": "Eurosteel"}'
d = dict(re.findall('"(.+?)": "(.+?)"[,}]', s))

输出

{'name': 'hammer 1.5"', 'brand': 'Eurosteel'}
0赞 John Gardounis 9/18/2023 #2

您可以使用 json.dumps 将数据转换为字典,并在键和值周围应用正确的引号:

import json
data = '{"name": "hammer 1.5", "brand": "Eurosteel"}'
dct = json.loads(data)