jsonStr ='{“name”:“John”s Garage“,”company“:”ABC“}'
这是一个字符串JSON。
需要转换为
'{"name": "John\"s Garage", "company": "ABC"}'
或
完全删除双引号
'{"name": "Johns Garage", "company": "ABC"}'
import re
re.sub(r'[a-zA-Z]\"[a-zA-Z]', '', )
这不会给出理想的重新
答案 0 :(得分:1)
使用re.sub
:
re.sub(r'(:\s+"[^"]*)"(?=[^"]*",)', r'\1', json_str)
re.sub(r'(:\s+"[^"]*)"(?=[^"]*",)', r'\1\"', json_str)
(:\s+"[^"]*)
匹配从上一个:
到第二个"
的部分,并放入捕获的第1组
"
与文字"
匹配,零宽度正向预告(?=[^"]*",)
确保匹配后跟另一个"
,紧接在{{1}之前}}
在第一次更换中,仅保留捕获的组;在第二个被捕获的小组之后是替换
,
示例:强>
"
答案 1 :(得分:0)
你可以这样使用re.sub
:
re.sub(r'([a-zA-Z])"([a-zA-Z])', r'\1\2', input);
这将保留引号周围的任何字母字符,因此它不会以后面带有空格,逗号或冒号的双引号为目标。
我现在看到你尝试了类似的东西。区别在于捕获组,并使用r'\1\2'