为何PyYAML中两个时间格式表达式解析结果不同?
PyYAML解析时间格式出现差异的原因
先看对应的代码示例:
import yaml from io import StringIO yaml.full_load(StringIO('a: 16:00:00')) # {'a': 57600} yaml.full_load(StringIO('a: 09:31:00')) # {'a': '09:31:00'}
出现这种差异的核心原因是PyYAML的自动类型解析规则:
- 对于
16:00:00,PyYAML将其识别为六十进制时间格式,自动转换为总秒数:16×3600 + 0×60 + 0 = 57600,最终解析为整数类型。 - 对于
09:31:00,开头的09不符合YAML的数字解析规则:YAML里以0开头的数字会被视为八进制,但八进制只允许0-7的数字,09属于非法八进制数,因此PyYAML不会触发六十进制解析逻辑,直接将整个内容当作字符串处理。
内容的提问来源于stack exchange,提问作者extremeaxe5
相关产品推荐
相关产品推荐

