问题描述
YAML文件中还有其他对象。但是,将指定不带引号的整数值。因此,我只关心整数输入。
示例YAML文件:
SendUserEmails
我正在使用yamlordereddictloader在python脚本中读取此YAML文件
DecimalsList:
- 34
- 0432 # PyYAML converts 0432 to 287 by interpreting this as octal.
这将破坏我的应用程序逻辑,因为它与YAML文件中输入的值不匹配。
我该如何实现?
是否有一种方法可以阻止PyYAML对整数的隐式转换?
解决方法
也许有更好的方法,但是一种方法是预处理yaml文件并使用正则表达式删除所有前导零:
import re
with open(yaml_file_path,'r') as stream:
stream = re.sub(r'\b0(\d+)\b',r'\1',stream.read())
yaml_object = yaml.load(stream,Loader=yamlordereddictloader.Loader)