首页 > 解决方案 > 无法找到从 txt 文件在 python 2.7 中构建 json 的逻辑

问题描述

我的 txt 文件包含带有来源和来源的航空公司。例如,如果联合航空公司与每个来源和来源相关联,那么我可以自己构建 JSON。但这里的问题是联合航空公司和阿联酋航空公司被定义一次,然后它有多个来源和来源。

United Airline

Source : UK
Origin : IN

Source : DN
Origin : VN

Emirates

Source : DU
Origin : KO

Source : KL
Origin : NP

Source : ZO
Origin : PL

我想构建一个JSON,如下所示

{
    "Supplier":"United Airlines",
    "Source" : "UK",
    "Origin" : "IN",
},
{
    "Supplier":"United Airlines",
    "Source" : "DN",
    "Origin" : "VN",
},
{
    "Supplier":"Emirates",
    "Source" : "DU",
    "Origin" : "KO",
},
{
    "Supplier":"Emirates",
    "Source" : "KL",
    "Origin" : "NP",
},
{
    "Supplier":"Emirates",
    "Source" : "ZO",
    "Origin" : "PL",
},

标签: pythonpython-2.7

解决方案


import json
from collections import OrderedDict
with open("airline.txt","r") as fin:
   supplier = origin = source = ""  # init empty
   final_result = []
   for line in fin:
      line = line.strip()
      if not line:
         continue
      if ":" not in line:  # it is the supplier
          supplier = line
      elif "Source" in line:
          source = line.split(": ")[-1]
      elif "Origin" in line:
          origin = line.split(": ")[-1]
      else:
          print("Not recognized line {}".format(line))
      if all([supplier, origin, source]):
          final_result.append(OrderedDict({"Supplier":supplier,"Source":source, "Origin":origin}))
          source = origin = ""
   with open("json_output.json","a+") as fout:
      json.dump(final_result,fout)

输出:

 {"Supplier": "United Airline",
 "Source": "UK",
 "Origin": "IN"},
 {"Supplier": "United Airline",
 "Source": "DN",
 "Origin": "VN"},
 {"Supplier": "Emirates",
 "Source": "DU",
 "Origin": "KO"},
 {"Supplier": "Emirates",
 "Source": "KL",
 "Origin": "NP"},
 {"Supplier": "Emirates",
 "Source": "ZO",
 "Origin": "PL"}  

推荐阅读