python string(js变量类型)转字典

python string(js variable type) to dictionary

如何将此字符串转换为字典

我正在尝试正则表达式 r"},\s\]",但没有得到想要的结果。

HTTP 请求正文

内容类型:text/html

var sample = {
        "date": "2022. 03. 23. 16:18",
        "list":
                [
                         {
                                "name": "USD",
                                "var1":"1236.26",
                                "var2":"1193.74",
                                "var3":"1226.90",
                                "var4":"1203.10",
                                "var5":"1215.00"
                         },
                         {
                                "name": "JPY",
                                "var1":"1020.81",
                                "var2":"985.71",
                                "var3":"1013.09",
                                "var4":"993.43",
                                "var5":"1003.26"
                         },
                ]
    }
import json

sample = """{
    "date": "2022. 03. 23. 16:18",
    "list":
    [
        {
            "name": "USD",
            "var1": "1236.26",
            "var2": "1193.74",
            "var3": "1226.90",
            "var4": "1203.10",
            "var5": "1215.00"
        },
        {
            "name": "JPY",
            "var1": "1020.81",
            "var2": "985.71",
            "var3": "1013.09",
            "var4": "993.43",
            "var5": "1003.26"
        },
    ]
}"""


to_dict = json.loads(sample)

首先我们需要去掉任何尾随逗号:

_sample = sample.replace("\n", "").replace(" ", "").replace(",]", "]")

您也可以为此使用正则表达式:

import re

_sample = re.sub(r",(\s)+]", "]", sample)

然后用json.loads()解析成dict

import json

outcome = json.loads(_sample)

超越OQ
如果我们也有可能在字典的最后一个 key-value 之后有尾随逗号:例如{"var5": "1215.00",} 你可以将上面的代码更新为:

_sample = sample.replace("\n", "").replace(" ", "").replace(",}", "}").replace(",]", "]")

或使用正则表达式:

regex = r"(,(\s)+]|,(\s)+})"