Python转换并将yml转换为json

2024-09-29 00:11:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个(或两个)将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)

我得到了我需要的结果:

^{pr2}$

我试图缩小代码,得到了相同的结果。在

#                 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)

有没有Python式的方法可以做到这一点?在


Tags: 代码injsonyamlforversionymlpop
1条回答
网友
1楼 · 发布于 2024-09-29 00:11:36

我不认为打高尔夫球总是导致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))

相关问题 更多 >