使用python替换json值中的双引号

时间:2018-02-15 22:11:35

标签: python json regex

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]', '', )

这不会给出理想的重新

2 个答案:

答案 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'

重新插入它们