我使用PyYAML将python字典输出为YAML格式:
import yaml
d = { 'bar': { 'foo': 'hello', 'supercalifragilisticexpialidocious': 'world' } }
print yaml.dump(d, default_flow_style=False)
输出结果为:
bar:
foo: hello
supercalifragilisticexpialidocious: world
但我想:
bar:
foo : hello
supercalifragilisticexpialidocious : world
是否有一个简单的解决方案,即使是次优的问题?
答案 0 :(得分:4)
好的,到目前为止我已经提出了这个问题。
我的解决方案涉及两个步骤。第一步定义了一个字典表示器,用于向键添加尾随空格。通过此步骤,我在输出中获得引用的键。这就是我为删除所有这些引号添加第二步的原因:
import yaml
d = {'bar': {'foo': 'hello', 'supercalifragilisticexpialidocious': 'world'}}
# FIRST STEP:
# Define a PyYAML dict representer for adding trailing spaces to keys
def dict_representer(dumper, data):
keyWidth = max(len(k) for k in data))
aligned = {k+' '*(keyWidth-len(k)):v for k,v in data.iteritems()}
return dumper.represent_mapping('tag:yaml.org,2002:map', aligned)
yaml.add_representer(dict, dict_representer)
# SECOND STEP:
# Remove quotes in the rendered string
print yaml.dump(d, default_flow_style=False).replace('\'', '')
答案 1 :(得分:0)
我发现https://github.com/jonschlinkert/align-yaml用于JavaScript,并通过
将其翻译成Python。https://github.com/eevleevs/align-yaml-python
它不使用PyYAML,无需解析即可直接将其应用于YAML输出。
以下功能的副本:
www.google.com