【问题标题】:ruamel.yaml ReaderError when trying to load special characters (Non-whitespace controls)ruamel.yaml ReaderError 尝试加载特殊字符时(非空白控件)
【发布时间】:2018-11-26 20:47:33
【问题描述】:

尝试使用 ruamel.yaml 将 big-list-of-naughty-strings 加载到 Python 中(以测试 API 的字符集)。

除了以下 2 行:115 和 120(json 版本中的 94 和 95)之外,一切都正常加载。

在 cmets 中,它们被描述为“非空白 C0 控件”和“非空白 C1 控件”。

例子:

>>> from ruamel.yaml import YAML
>>> ruamel_yaml = YAML()
>>> ruamel_yaml.load('\u000f')
...
ruamel.yaml.reader.ReaderError: unacceptable character #x000f: special characters are not allowed
  in "<unicode string>", position 0

想知道这可能是错误还是预期行为。

【问题讨论】:

    标签: python ruamel.yaml


    【解决方案1】:

    您似乎没有参考 YAML 规范中的character set chapter

    允许的字符范围明确排除 C0 控制块 #x0-#x1F(TAB #x9、LF #xA 和 CR #xD 除外)、DEL #x7F、C1 控制块 #x80-# x9F(允许的 NEL #x85 除外)、代理块 #xD800-#xDFFF、#xFFFE 和 #xFFFF。

    第 115 行是 C0 控件,第 120 行是 C1 控件,因此这些行没有加载也就不足为奇了。

    【讨论】:

    • 谢谢,他们也有base64 版本,所以我想用它来将一些特殊字符加载到 Python 中会是一个解决方案。
    • 是的,这是一个单独的问题。确保正确格式化代码,提供输出文件的内容,参考规范为什么输出无效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2011-03-21
    相关资源
    最近更新 更多