草庐IT

PyYAML库

全部标签

python - 字符串中 "!"上的 pyYAML 错误

首先,免责声明:我对YAML不太熟悉。我正在尝试将YAML文档解析为键值对(不要担心我是怎么做的。我已经处理好了)我的文件以前看起来像这样:world:people:name:Suzyaddress:chez-bob然后,有人去改了。world:people:name:!$uzyaddress:chez-bob我得到这个解析错误:yaml.constructor.ConstructorError:couldnotdetermineaconstructorforthetag'!$uzy'这到底是什么意思?我将如何让它只将!$解释为两个字符?我只想要一个字符串键和值的字典!此外,编辑yam

python - 禁用 PyYAML 值转换

我刚刚开始使用PyYAML来转换一些数据。我只是使用yaml.load函数,它对我来说已经足够好了,直到我注意到它试图将所有值转换为统一编码的字符串、整数、日期等。这在我的应用程序中可能是致命的,有没有办法避免这种转换?我想以字符串形式接收所有内容。我查看了构造函数,但找不到禁用此转换的方法。更新:我从yaml.load得到的是一个OrderedDict,一切看起来都不错。唯一的问题是有些值是字符串,有些是整数。我想将所有值都作为字符串。我不希望pyyaml为我转换这些值。 最佳答案 好吧,您可以使用Loader=yaml.Base

python - 在 PyYaml 中转储为 utf-8

我正在尝试加载一堆utf-8编码的字符串并使用PyYaml再次转储它们。这是加载/转储的代码:lang_yml=yaml.load(codecs.open(lang+".yml.old","r","utf-8"))test_file_path=lang+'.yml'stream=file(test_file_path,'w')yaml.dump(lang_yml,stream,default_flow_style=False,encoding=('utf-8'))但是以“Enarrière”开头的字符串最终被保存为“Enarri\xE8re”。我做错了什么?

python - 有没有办法在所有节点完成加载后使用 PyYAML construct_mapping 构造对象?

我正在尝试在python中创建一个创建自定义python对象的yaml序列。该对象需要使用在__init__之后解构的字典和列表来构造。但是,construct_mapping函数似乎并没有构建整个嵌入序列(列表)和dict的树。请考虑以下事项:importyamlclassFoo(object):def__init__(self,s,l=None,d=None):self.s=sself.l=lself.d=ddeffoo_constructor(loader,node):values=loader.construct_mapping(node)s=values["s"]d=valu

python - 格式化 PyYAML dump() 输出

我有一个字典列表,我想对其进行序列化:list_of_dicts=[{'key_1':'value_a','key_2':'value_b'},{'key_1':'value_c','key_2':'value_d'},...{'key_1':'value_x','key_2':'value_y'}]yaml.dump(list_of_dicts,file,default_flow_style=False)产生以下内容:-key_1:value_akey_2:value_b-key_1:value_ckey_2:value_d(...)-key_1:value_xkey_2:value

python - 如何控制 PyYAML 用于我的数据的标量形式?

我有一个具有短字符串属性和长多行字符串属性的对象。我想将短字符串写为YAML引用的标量,将多行字符串写为文字标量:my_obj.short="Hello"my_obj.long="Line1\nLine2\nLine3"我希望YAML看起来像这样:short:"Hello"long:|Line1Line2Line3如何指示PyYAML执行此操作?如果我调用yaml.dump(my_obj),它会产生类似dict的输出:{long:'line1line2line3',short:Hello}(不知道为什么long是这样的双倍行距...)我可以指示PyYAML如何处理我的属性吗?我想同时影

python - pyyaml 正在产生不希望的 !!python/unicode 输出

我正在使用pyyaml将对象转储到文件中。对象中有几个unicode字符串。我以前这样做过,但现在它会产生这样的输出项:'item':!!python/unicode"somestring"而不是想要的:'item':'somestring'我打算输出为utf-8。我当前使用的命令是:yaml.dump(data,file(suite_out,'w'),encoding='utf-8',indent=4,allow_unicode=True)在其他位置,我执行以下操作并且有效:codecs.open(suite_out,"w","utf-8").write(yaml.dump(suit

python - PyYAML 可以按非字母顺序转储 dict 项目吗?

我正在使用yaml.dump来输出一个字典。它根据键按字母顺序打印出每个项目。>>>d={"z":0,"y":0,"x":0}>>>yaml.dump(d,default_flow_style=False)'x:0\ny:0\nz:0\n'有没有办法控制键/值对的顺序?在我的特定用例中,反向打印(巧合地)就足够了。不过,为了完整起见,我正在寻找一个显示如何更精确地控制订单的答案。我看过使用collections.OrderedDict但PyYAML不(似乎)支持它。我还查看了yaml.Dumper的子类化,但我无法弄清楚它是否能够更改项目顺序。 最佳答案

python - 在 PyYAML 中保存/转储带有注释的 YAML 文件

我有一个如下所示的yaml文件:#Thefollowingkeyopensadoorkey:value有没有办法在维护评论的同时load和dump这些数据? 最佳答案 如果您使用的是block结构的YAML,您可以使用python包¹ruamel.yaml它是PyYAML的衍生物,支持评论的往返保存:importsysimportruamel.yamlyaml_str="""\#examplename:#detailsfamily:Smith#verycommongiven:Alice#oneofthesiblings"""yaml

python - pyyaml:不带标签的倾销

我有>>>importyaml>>>yaml.dump(u'abc')"!!python/unicode'abc'\n"但我想要>>>importyaml>>>yaml.dump(u'abc',magic='something')'abc\n'什么魔法参数强制不标记? 最佳答案 您可以使用safe_dump代替dump。请记住,那时它将无法表示任意Python对象。此外,当您loadYAML时,您将获得一个str对象而不是unicode。 关于python-pyyaml:不带标签的倾销,