繁体   English   中英

ruamel.yaml 如何引用包含冒号的字符串?

[英]ruamel.yaml How to quote strings containing colon?

在 python 中使用ruamel.yaml时,我遇到了转储 yaml 的问题,但包含冒号的字符串不是引号。 有谁知道如何解决?

import ruamel.yaml
import sys

yaml = YAML()
yaml.default_flow_style = False

d = {"example": "2:1"}
yaml.dump(d, sys.stdout)

产量

example: 2:1

当我期待

example: '2:1'

编辑:所以上面的响应显示响应是有效的 yaml ( https://yaml.org/spec/ )。 我的管道中的某些东西似乎在此过程中处理不当。

是否可以强制 ruamel.yaml 引用值?

所以事实证明,我的管道中的某些东西是假设 YAML 1.1。 问题不在于2:1在 1.1 或任何 YAML 版本中不是有效的 YAML ,而是在 YAML 1.1 2:1被解释为基数 60 而不是字符串。

基本上这不是问题。 ruamel.yaml正确处理了一切。

如果您的管道中有假定 YAML 1.1 的元素(例如,如果它们基于 PyYAML),那么您的2:1将被解释为六十进制。 在这种情况下,您应该在YAML()实例化之后添加一行:

 yaml = YAML()
 yaml.version = (1, 1) # you can also use: yaml.version = "1.1"

但这会在您的文档中添加一个明确的%YAML 1.1 header 行。

您可以使用显式引用此字符串,而不是添加版本行

 from ruamel.yaml.scalarstring import DoubleQuotedScalarString as DQS

 d = {"example": DQS("2:1")}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM