- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用 CLoader 作为 yaml.load 的加载器时,它不会处理我的 json 中的 unicode。但是,当我使用默认加载器时,json 加载正常。
我可以通过捕获异常并在没有 CLoader 的情况下加载它来解决这个问题。
有没有人知道解决方案的经验?
#!/usr/bin/python
import yaml
from yaml import CLoader as Loader1
from yaml import Loader
data_string = "\"nickname\": \"Stringhere \ud83d\udcaf\""
print "Loading with default loader"
json_data = yaml.load(data_string, Loader=Loader)
print "Loading with CLoader"
json_data = yaml.load(data_string, Loader=Loader1)
yaml.scanner.ScannerError: while parsing a quoted scalar
in "<byte string>", line 1, column 13
found invalid Unicode character escape code
in "<byte string>", line 1, column 27
最佳答案
参见 http://pyyaml.org/wiki/PyYAMLDocumentation
PyYAML CLoader 在底层使用 libyaml。而 libyaml 将拒绝此类转义。仅支持某些 \u
转义,但不支持构建代理对的转义。
PyYAML python 解析器(由 Loader
导入的加载器使用)然而,解析它,但仍然没有将它转换为 unicode 字符。
YAML 1.1/1.2 规范没有明确提及代理对。然而,由于 YAML 1.2 是 JSON 的超集,而 JSON 支持这一点,我认为 libyaml 也应该支持这一点。 (它以 YAML 1.1 为目标,但由于它目前只会返回一个错误,因此添加对此的支持不会有什么坏处。)
我为 libyaml 创建了一个问题:https://github.com/yaml/libyaml/issues/110
https://en.wikipedia.org/wiki/UTF-16
JSON RFC 在第 7 章中提到代理对: https://www.rfc-editor.org/rfc/rfc7159#section-7
关于Python CLoader 和 Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49072681/
当使用 CLoader 作为 yaml.load 的加载器时,它不会处理我的 json 中的 unicode。但是,当我使用默认加载器时,json 加载正常。 我可以通过捕获异常并在没有 CLoade
有没有办法让 PyYaml 的默认加载器成为 CLoader。所以不必这样做 yaml.load(f, Loader=yaml.CLoader) 它只是默认为 CLoader,所以我可以这样做: ya
我是一名优秀的程序员,十分优秀!