Python 正则表达式重新格式化不正确的JSON数据

Python 正则表达式重新格式化不正确的JSON数据,python,json,Python,Json,我有一些数据没有正确地保存在旧数据库中。我正在将系统移动到一个新的数据库,并重新格式化旧数据。旧数据如下所示: a:10:{ s:7:"step_no";s:1:"1"; s:9:"YOUR_NAME";s:14:"Firtname Lastname"; s:11:"CITIZENSHIP"; s:7:"Indian"; s:22:"PROPOSE_NAME_BUSINESS1"; s:12:"ABC Limited"; s:22:"PROPOSE_NAM

我有一些数据没有正确地保存在旧数据库中。我正在将系统移动到一个新的数据库,并重新格式化旧数据。旧数据如下所示:

a:10:{
    s:7:"step_no";s:1:"1";
    s:9:"YOUR_NAME";s:14:"Firtname Lastname";
    s:11:"CITIZENSHIP"; s:7:"Indian";
    s:22:"PROPOSE_NAME_BUSINESS1"; s:12:"ABC Limited";
    s:22:"PROPOSE_NAME_BUSINESS2"; s:15:"XYZ Investment";
    s:22:"PROPOSE_NAME_BUSINESS3";s:0:"";
    s:22:"PROPOSE_NAME_BUSINESS4";s:0:"";
    s:23:"PURPOSE_NATURE_BUSINESS";s:15:"Some dummy content";
    s:15:"CAPITAL_COMPANY";s:24:"20 Million Capital";
    s:14:"ANOTHER_AMOUNT";s:0:"";
}
data = {
    "step_no": "1",
    "YOUR_NAME":"Firtname Lastname",
    "CITIZENSHIP":"Indian",
    "PROPOSE_NAME_BUSINESS1":"ABC Limited",
    "PROPOSE_NAME_BUSINESS2":"XYZ Investment",
    "PROPOSE_NAME_BUSINESS3":"",
    "PROPOSE_NAME_BUSINESS4":"",
    "PURPOSE_NATURE_BUSINESS":"Some dummy content",
    "CAPITAL_COMPANY":"20 Million Capital",
    "ANOTHER_AMOUNT":""
}
我希望新外观采用正确的JSON格式,这样我就可以用python jut阅读如下内容:

a:10:{
    s:7:"step_no";s:1:"1";
    s:9:"YOUR_NAME";s:14:"Firtname Lastname";
    s:11:"CITIZENSHIP"; s:7:"Indian";
    s:22:"PROPOSE_NAME_BUSINESS1"; s:12:"ABC Limited";
    s:22:"PROPOSE_NAME_BUSINESS2"; s:15:"XYZ Investment";
    s:22:"PROPOSE_NAME_BUSINESS3";s:0:"";
    s:22:"PROPOSE_NAME_BUSINESS4";s:0:"";
    s:23:"PURPOSE_NATURE_BUSINESS";s:15:"Some dummy content";
    s:15:"CAPITAL_COMPANY";s:24:"20 Million Capital";
    s:14:"ANOTHER_AMOUNT";s:0:"";
}
data = {
    "step_no": "1",
    "YOUR_NAME":"Firtname Lastname",
    "CITIZENSHIP":"Indian",
    "PROPOSE_NAME_BUSINESS1":"ABC Limited",
    "PROPOSE_NAME_BUSINESS2":"XYZ Investment",
    "PROPOSE_NAME_BUSINESS3":"",
    "PROPOSE_NAME_BUSINESS4":"",
    "PURPOSE_NATURE_BUSINESS":"Some dummy content",
    "CAPITAL_COMPANY":"20 Million Capital",
    "ANOTHER_AMOUNT":""
}

我正在考虑使用正则表达式去掉不需要的部分,并使用caps中的名称重新格式化内容,但我不知道如何实现这一点。

正则表达式在这里是错误的方法。没有必要,而且格式比您想象的要复杂一些

您在数据库中有数据。您可以使用以下命令在Python中对其进行简单的反序列化:

请注意,PHP字符串是字节字符串,而不是Unicode文本,因此,特别是在Python3中,如果希望能够重新编码为JSON,则必须先解码键值对。
decode\u strings=True
标志会为您解决这个问题。默认值为UTF-8,传入
编码
参数以选择不同的编解码器

PHP还将数组用于序列,因此您可能必须首先将任何带整数键的解码
dict
对象转换为列表,这就是
fixup\u PHP\u arrays()
函数所做的

演示(对于修复的数据,许多字符串长度已关闭,并添加了空格):


正则表达式在这里是错误的方法。没有必要,而且格式比您想象的要复杂一些

您在数据库中有数据。您可以使用以下命令在Python中对其进行简单的反序列化:

请注意,PHP字符串是字节字符串,而不是Unicode文本,因此,特别是在Python3中,如果希望能够重新编码为JSON,则必须先解码键值对。
decode\u strings=True
标志会为您解决这个问题。默认值为UTF-8,传入
编码
参数以选择不同的编解码器

PHP还将数组用于序列,因此您可能必须首先将任何带整数键的解码
dict
对象转换为列表,这就是
fixup\u PHP\u arrays()
函数所做的

演示(对于修复的数据,许多字符串长度已关闭,并添加了空格):