我希望能够转储一个字典,该字典包含我希望以块样式包含的长字符串,以提高可读性。例如:
foo: | this is a block literal bar: > this is a folded block
PyYAML支持这种样式的文档加载,但是我似乎找不到找到这种方式转储文档的方法。我想念什么吗?
import yaml class folded_unicode(unicode): pass class literal_unicode(unicode): pass def folded_unicode_representer(dumper, data): return dumper.represent_scalar(u'tag:yaml.org,2002:str', data, style='>') def literal_unicode_representer(dumper, data): return dumper.represent_scalar(u'tag:yaml.org,2002:str', data, style='|') yaml.add_representer(folded_unicode, folded_unicode_representer) yaml.add_representer(literal_unicode, literal_unicode_representer) data = { 'literal':literal_unicode( u'by hjw ___\n' ' __ /.-.\\\n' ' / )_____________\\\\ Y\n' ' /_ /=== == === === =\\ _\\_\n' '( /)=== == === === == Y \\\n' ' `-------------------( o )\n' ' \\___/\n'), 'folded': folded_unicode( u'It removes all ordinary curses from all equipped items. ' 'Heavy or permanent curses are unaffected.\n')} print yaml.dump(data)
结果:
folded: > It removes all ordinary curses from all equipped items. Heavy or permanent curses are unaffected. literal: | by hjw ___ __ /.-.\ / )_____________\\ Y /_ /=== == === === =\ _\_ ( /)=== == === === == Y \ `-------------------( o ) \___/
为了完整起见,还应该有str实现,但是我会很懒惰:-)