为何yaml.safe_load('104:1')返回数字6241而非报错?
为什么yaml.safe_load('104:1')返回6241?
这是YAML的特殊语法规则导致的:当你写的字符串是104:1且冒号后没有空格时,YAML不会把它解析成键值对(键值对要求冒号后必须加空格,比如key: value),而是将其识别为分钟:秒的时间格式,并自动转换为总秒数。
计算逻辑很直接:
- 104分钟换算成秒是
104 * 60 = 6240 - 加上1秒后就是
6240 + 1 = 6241
对应的代码验证:
>>> import yaml >>> yaml.safe_load('104:1') 6241
如果想让它被解析成键值对,只需要在冒号后加个空格,写成104: 1,此时yaml.safe_load会返回字典{'104': 1}。
内容的提问来源于stack exchange,提问作者Rilwan
相关产品推荐
相关产品推荐

