使用OrderedDict加载和转储十六进制值

时间:2014-11-28 18:12:04

标签: python yaml pyyaml

我使用this回答中的OrderedLoader。保持文件的顺序很有效但我的YAML有一些十六进制字段,如:

  fieldA:
   subA: foo
   subB: 0xff00
   subC: 0x00aa

在加载时转换为int字段:

 ('fieldA', OrderedDict([('subA', 'foo'), ('subB', 65280), ('subC', 170)

然后转储如:

fieldA:
  subA: foo
  subB: 65280
  subC: 170

有人如何防止这种情况发生?我用safe_dump BaseLoader处理了一段时间,等等没有运气。

谢谢!

1 个答案:

答案 0 :(得分:0)

我最后通过在原始YAML文件中用引号括起十六进制数字来结束:

  fieldA:
   subA: foo
   subB: '0xff00'
   subC: '0x00aa'

现在PyYAML并没有尝试转换它们。

谢谢!