首页 > 解决方案 > ruamel.yaml ReaderError 尝试加载特殊字符时(非空白控件)

问题描述

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

除了 2 行:115 和 120(json版本中的 94 和 95)之外,一切都加载得很好。

在评论中,它们被描述为“非空白 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

想知道这是否可能是一个错误或预期的行为。

标签: pythonruamel.yaml

解决方案


看来您还没有查阅YAML 规范中的字符集章节:

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

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


推荐阅读