我正在从 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©
我怎样才能做到这一点?
你失踪了encoding
在你派生的YAML
object.
尝试这样:
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'
If you ,你会注意到默认情况下,encoding
未定义:
self.encoding = None
它留下来None
通过 and YAML.dump_all()
。在全球范围内方法,相反,encoding
设置为默认值utf-8
(仅限 Python 2)。
Update。这实际上是一个错误ruamel.yaml
对于 Python 2(感谢@Anthon)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)