【问题标题】:Python transform and convert yml to jsonPython 将 yaml 转换为 json
【发布时间】:2016-02-16 08:59:22
【问题描述】:

我正在尝试创建一个(或两个)在线衬里,用于将 YAML 文件转换为 Json 并执行简单的转换。

代码如下:

#!/usr/bin/python
import yaml,json

yml="""
- AppName: Wiki-server
- InstanceType: m4.large
"""

#                 Version 1:
y = yaml.load(yml)
o=[]
for i in y:
  d={}
  d['ParameterKey']=i.keys()[0]
  d['ParameterValue']=i.values()[0]
  o.append(d)
print json.dumps(o, indent=2)

我得到了我需要的结果:

[
  {
    "ParameterValue": "Wiki-server", 
    "ParameterKey": "AppName"
  }, 
  {
    "ParameterValue": "m4.large", 
    "ParameterKey": "InstanceType"
  }
]

我尝试缩小代码并得到相同的结果。

#                 Version 2:
p=("ParameterKey","ParameterValue")
o=[dict([zip(p,d.items().pop()) for d in [s] ].pop()) for s in y] 
print json.dumps(o, indent=2)

#                 Version 3:
(pk,pv)=("ParameterKey","ParameterValue")
o=[b for r in [ map(lambda (k,v): {pk:k,pv:v}, s.iteritems()) for s in y ] for b in r]
print json.dumps(o, indent=2)

有没有pythonic方法可以做到这一点?

【问题讨论】:

    标签: python json aws-cli amazon-cloudformation


    【解决方案1】:

    我不认为打高尔夫球总是会导致 python 代码,但这是我能想到的最好的。我认为这很清楚发生了什么,同时也很简洁。虽然不是那里的神奇数字的忠实粉丝。

    #!/usr/bin/python
    import yaml,json
    
    yml="""
    - AppName: Wiki-server
    - InstanceType: m4.large
    """
    
    y = yaml.load(yml)
    d = [i.items()[0] for i in y]
    d = [{'parameterKey': k_v[0], 'parameterValue': k_v[1]} for k_v in d]
    print(json.dumps(d, indent=2))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 2018-12-19
      • 1970-01-01
      • 2015-12-20
      • 2015-08-02
      • 1970-01-01
      • 2015-02-07
      相关资源
      最近更新 更多