gpt4 book ai didi

Python CLoader 和 Unicode

转载 作者:行者123 更新时间:2023-11-28 17:08:55 24 4
gpt4 key购买 nike

当使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com