删除JSON文档中键值的前导和尾随后冲

时间:2015-06-08 04:50:41

标签: python regex json

我有以下JSON结构。

"bent": "{
       \"ActiveT\": 6,
        \"ErrorM\": \"None\",
        \"Except\": \"None\",
        \"HadErr\": \"false\",
        \"HM\": 62,
        \"NHM\": 57,
        \"Parameter\": \"14331232706\",
        \"ReturnCode\": \"3050\",
        \"Severity\": \"info\",
        \"Timestamp\": \"Tue July0209: 58: 16NZST2015\",
        \"TId\": \"9891319709\",
        \"UserInfo\": \"Unknown\",
    }"

我想在JSON结构中的每个\key的开头和结尾删除value。我想使用python正则表达式执行此操作。< / p>

2 个答案:

答案 0 :(得分:3)

使用re.sub

>>> print re.sub(r'\\(?=")', '', string)
"bent": "{
       "ActiveT": 6,
        "ErrorM": "None",
        "Except": "None",
        "HadErr": "false",
        "HM": 62,
        "NHM": 57,
        "Parameter": "14331232706",
        "ReturnCode": "3050",
        "Severity": "info",
        "Timestamp": "Tue July0209: 58: 16NZST2015",
        "TId": "9891319709",
        "UserInfo": "Unknown",
    }

正则表达式解释

  • \\匹配\

  • (?=")积极向前看。检查\后面是"

  • 将其替换为空字符串。

使用string.replace

>>> print string.replace('\\"', '"')
"bent": "{
       "ActiveT": 6,
        "ErrorM": "None",
        "Except": "None",
        "HadErr": "false",
        "HM": 62,
        "NHM": 57,
        "Parameter": "14331232706",
        "ReturnCode": "3050",
        "Severity": "info",
        "Timestamp": "Tue July0209: 58: 16NZST2015",
        "TId": "9891319709",
        "UserInfo": "Unknown",
    }

答案 1 :(得分:0)

在这里使用正则表达式听起来像是错误的方法。如果这是实际的JSON数据(我假设您的示例中缺少{}),正确的答案是正确解析它:

d1 = json.loads(data)
d2 = json.loads(d1['bent'])