python – 有什么区别!和!!在yaml?
发布时间:2020-12-16 21:54:41 所属栏目:Python 来源:网络整理
导读:我正在尝试加载看起来像这样的YAML: dist: !!opencv-matrix rows: 380 cols: 380 dt: f data: [ 0.,0.,-1.88644529e+18,2.45423365e+00,11698176.,2.03862047e+00,-8.85501460e+10,2.54738545e+00,1.71208843e+20,... 2.44447327e+00 ] 加载代码只是: impo
我正在尝试加载看起来像这样的YAML:
加载代码只是:
其中s是加载到字符串中的YAML. 我收到此错误:
这很公平,所以我添加了该标记的构造函数:
我仍然得到错误.但是,如果我用!opencv_matrix替换!! opencv_matrix,那么一切正常. 这里发生了什么? 最佳答案
像!! opencv-matrix这样的辅助标签实际上是标签的简写:yaml.org,2002:opencv-matrix(在reference card中提到).看起来PyYAML的add_constructor方法无法正确处理这种速记符号.
这可能是一个错误,具体取决于二级标记的解释方式(参见下面的第二部分).我已经提交了错误报告here,希望它能得到解决. 像!opencv-matrix这样的主要标签是明确定义的,并且加载似乎在PyYAML中没有任何问题. 如果你使用标签:yaml.org,2002:opencv-matrix在add_constructor调用中替换!! opencv-matrix,它对我有用. 至于原始问题,AFAIK主标签(!)用于用户定义类型,而辅助标签(!!)用于表示与标准语言无关的类型defined here(因此是长而奇特的格式). 如果这是一个OpenCV生成的文件,那么如果将这些标记更改为应用程序中的主标记可能会更简单. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |