我得到这个奇怪的问题,同时加载一个yaml文件与地址转换为数字的mac地址。pyyaml将mac地址转换为编号
>>> yaml.safe_load('abc: 11:00:00:00:00:00')
{'abc': 8553600000}
>>> yaml.safe_load('abc: 99:00:00:00:00:00')
{'abc': 76982400000}
但后来我尝试了以下,我得到的答案如预期。
>>> yaml.safe_load('abc: ff:00:00:00:00:00')
{'abc': 'ff:00:00:00:00:00'}
我知道解决方案,这是有引号内的MAC地址,但我想知道这种行为的原因。
有趣的是,我用ruby尝试了相同的数据,得到了类似的结果。
EDIT
添加其中它与只有数字
>>> yaml.load('abc: 52:00:00:60:00:00')
{'abc': '52:00:00:60:00:00'}
'ruamel.yaml'如果您的YAML文档以'%YAML 1.1'开头或者将该版本指定为'safe_load'的参数,则会加载sexagecimals,所以程序包没有摆脱它们。 Sexagesimals不在1.2中,这是ruamel.yaml默认的,它还支持其他1.2特性,例如八进制的'0o'。 (免责声明:我是你所指的“他们”)。 – Anthon
@Anthon:我的意思是说在YAML 1.2中没有sexagecimals,没有包的c –