使用python将重复模式转换为JSON文件

问题描述 投票:0回答:4

希望你做得很好,

我有一个数据文件(包含数千个结构化数据模式,如下所示)>>

PARTNER="ABC"
  ADDRESS1="ABC Country INN"
  DEPARTMENT="ABC Department"
  CONTACT_PERSON="HR"
  TELEPHONE="+91.90.XX XX X XXX"
  FAX="+01.XX.XX XX XX XX"
  EMAIL=""

PARTNER="DEF"
  ADDRESS1="DEF Malaysia"
  DEPARTMENT=""
  CONTACT_PERSON=""
  TELEPHONE="(YYY)YYYYY"
  FAX="(001)YYYYYYYY"
  EMAIL=""

PARTNER="GEH-LOP"
  ADDRESS1="GEH LOP Street"
  DEPARTMENT="HR"
  CONTACT_PERSON="Adam"
  TELEPHONE="+91.ZZ.ZZ.ZZZZ"
  FAX="+91.ZZ.ZZ.ZZZ"
  EMAIL=""

我尝试使用以下代码将数据文件(partner.txt)转换为JSON:

  1. 创建空字典dict1和dict2
  2. 逐行读取数据文件
  3. 如果不是line.isspace(),请使用此命令以确保读取了换行符,并将其写在字典dict1中
  4. 当换行符(出现空行)时,使用dict2.update(dict1)将dict1的内容附加到dict2。>
  • import json
    
    dict1 = {}
    dict2 ={}
    
    with open("partner.txt", "r") as fh:
        out_file = open("test1.json", "w")
        for line in fh:
            if not line.isspace():
                command, description = line.strip().split("=")
                dict1[command] = description.strip('"')
    
            else:
                dict2.update(dict1)
                print("space found")
        json.dump(dict2,out_file,indent=1)
    
    out_file.close()
    
    print("json file created")
    
    

但是此代码仅使用PARTNER的单个块创建一个json(test1.json)

{
 "PARTNER": "DEF",
 "ADDRESS1": "DEF Malaysia",
 "DEPARTMENT": "",
 "CONTACT_PERSON": "",
 "TELEPHONE": "(YYY)YYYYY",
 "FAX": "(001)YYYYYYYY",
 "EMAIL": ""
}

预期输出

我试图查找很多东西,但找不到方法:-
{
"data":[
{
 "PARTNER": "ABC",
 "ADDRESS1": "ABC Country INN",
 "DEPARTMENT": "ABC Department",
 "CONTACT_PERSON": "HR",
 "TELEPHONE": "+91.90.XX XX X XXX",
 "FAX": "+01.XX.XX XX XX XX",
 "EMAIL": ""
},
{
 "PARTNER": "DEF",
 "ADDRESS1": "DEF Malaysia",
 "DEPARTMENT": "",
 "CONTACT_PERSON": "",
 "TELEPHONE": "(YYY)YYYYY",
 "FAX": "(001)YYYYYYYY",
 "EMAIL": ""
},
{
 "PARTNER": "GEH-LOP",
 "ADDRESS1": "GEH LOP Street",
 "DEPARTMENT": "HR",
 "CONTACT_PERSON": "Adam",
 "TELEPHONE": "+91.ZZ.ZZ.ZZZZ",
 "FAX": "+91.ZZ.ZZ.ZZZ",
 "EMAIL": ""
}
]
}
            

[希望您做的很好,我有一个数据文件(包含数千个结构化数据模式),如下所示:PARTNER =“ ABC” ADDRESS1 =“ ABC Country INN” DEPARTMENT =“ ABC Department” CONTACT_PERSON =“ ...

python json regex text-processing
4个回答
0
投票

您每次都需要将dict1设置为新的dict:

import json
dict1 = {}
dict2 ={}

with open("partner.txt", "r") as fh:
    out_file = open("test1.json", "w")
    for line in fh:
        if not line.isspace():
            command, description = line.strip().split("=")
            dict1[command] = description.strip('"')    
        else:
            dict2.update(dict1)
            dict1 = {}                             # set it to new dict
            print("space found")
    json.dump(dict2,out_file,indent=1)

out_file.close()

print("json file created")

0
投票

您需要将字典追加到词典列表中,而不要使用update,因为它会覆盖始终相同的键:


0
投票

有很多方法可以做到这一点。也许我们应该使其可维护


0
投票

解决方案

© www.soinside.com 2019 - 2024. All rights reserved.