import rejson = '{"name": "Jack O"Sullivan", "id": "1"}'fixed = re.sub(r'("[sw]*)"([sw]*")',r"1'2", json)我怀疑这会工作(在repl.it上的工作示例),它使用以下正则表达式:
("[sw]*)"([sw]*")然后更换任何内
"用
'。只要包含列表有效(即
[sw]),此方法就起作用,即有效字符串仅包含空格和单词字符。您可能需要为更复杂的名称添加其他可能性。
它匹配任何字符串
"<alpha/space>"<alpha/space>",然后
"<whatwasbefore>'<whatwasafter>"使用捕获组和反向引用替换它。
请参阅regex101上的示例
正如我在评论中提到的,替代方法是使其排除json控制字符
[^{}:,]。这应该会产生相似的结果,但不会遗漏其中包含其他字符的名称(例如-,)。



