ruamel.yaml 尝试加载特殊字符时出现 ReaderError(非空白控件)

ruamel.yaml ReaderError when trying to load special characters (Non-whitespace controls)

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

除了 115 和 120(json 版本中的 94 和 95)这 2 行之外,其他所有内容都已正常加载。

在评论中,它们被描述为 'Non-whitespace C0 controls' 和 'Non-whitespace C1 controls'。

示例:

>>> 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

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

看来你没有查阅YAML规范中的character set chapter

The allowed character range explicitly excludes the C0 control block #x0-#x1F (except for TAB #x9, LF #xA, and CR #xD which are allowed), DEL #x7F, the C1 control block #x80-#x9F (except for NEL #x85 which is allowed), the surrogate block #xD800-#xDFFF, #xFFFE, and #xFFFF.

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