gpt4 book ai didi

python - 使用 YAML 转储 unicode

转载 作者:行者123 更新时间:2023-12-01 02:45:39 25 4
gpt4 key购买 nike

我正在从 csv 创建 yaml 文件,其中包含很多 unicode 字符,但我似乎无法让它转储 unicode,而不会给我带来解码错误。

我正在使用 ruamel.yaml 库。

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 11: ordinal not in range(128)

我尝试过解析字符串、unicode 字符串、使用“utf-8”编码似乎都不起作用。我见过很多例子,显示添加一个代表来解决问题,但它们似乎都在使用旧的 ruamel 方法,而且我似乎无法在任何地方记录的新方法中找到如何做到这一点。

from ruamel.yaml import YAML

class YamlObject(YAML):
def __init__(self):
YAML.__init__(self)
self.default_flow_style = False
self.block_seq_indent = 2
self.indent = 4
self.allow_unicode = True

textDict = {"text": u"HELLO_WORLD©"}
textFile = "D:\\testFile.yml"
yaml = YamlObject()
yaml.dump(textDict, file(textFile, "w"))

我可以对整个字典进行统一编码,这很有效,但它没有给我我需要的格式。

我需要的只是:

text: HELLO_WORLD©

我怎样才能做到这一点?

最佳答案

您在派生的 YAML 对象中缺少 encoding

尝试这样:

class YamlObject(YAML):
def __init__(self):
YAML.__init__(self)
self.default_flow_style = False
self.block_seq_indent = 2
self.indent = 4
self.allow_unicode = True
self.encoding = 'utf-8'

如果您look at the definition of your base class, YAML ,您会注意到默认情况下,encoding 未定义:

self.encoding = None

并且它一直保持直到 YAML.dump()和 YAML.dump_all()。在全局dump()方法,相反,encoding 设置为默认 utf-8(仅限 Python 2)。

更新。这实际上是 Python 2 的 ruamel.yaml 中的一个错误(感谢@Anthon)。

关于python - 使用 YAML 转储 unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45281596/

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