问题标签 [pyyaml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1857 浏览

javascript - 将 JavaScript 对象/数组转换为 Python dict/list 的最快方法

我正在尝试解析包含巨大 JavaScript 数组的 JavaScript 对象的代码,并将其转换为带有列表的 Python 字典。

目前我正在使用 PyYaml,但这并不能直接工作,因为它无法处理连续的逗号(例如,它在 '[,,,0,]' 上中断:预期节点内容,但发现 ', ')。所以我把这些替换掉了,但这一切都很慢。我想知道你们中是否有人知道更好更快的方法来做到这一点。JSON 解码不起作用,因为 JavaScript 代码也不是 JSON 有效的。

这是我正在使用的代码,如上所述,以 js_obj 为例:

0 投票
5 回答
5023 浏览

yaml - 使用 PyYAML.dump() 生成锚点?

我希望能够在 PyYAML 的 dump() 函数生成的 YAML 中生成锚点。有没有办法做到这一点?理想情况下,锚点与 YAML 节点具有相同的名称。

例子:

我想做的是生成 YAML,例如:

我可以编写自定义发射器或转储器来执行此操作吗?还有其他方法吗?

0 投票
1 回答
103 浏览

python - 应用程序的默认设置

我知道settingslogic-gem来自红宝石。这允许一种非常优雅的方式来为您的应用程序定义默认设置或回退设置,如settingslogic example中所述。

我正在阅读,PyYaml但还没有找到这么好的方法来做到这一点。

你将如何以优雅和 Pythonic 的方式解决这样的问题?

0 投票
1 回答
2359 浏览

python - PYAML 引发表示错误

我有这个嵌套字典类,我需要将其实例转储到 YAML

在转储这本词典时:

我收到此错误(仅发布了整个消息对象的摘录):

“RepresenterError:无法表示对象:{'a1401': 'ts755', 'ts64': {'topic': {'a1561': 'Process Control'}}, 'a1450': 'ts107', 'a1609': 'ts341','a1400':'ts753',......

那么如何在 YAML 中巧妙地表示这一点?我读到 PyYAML 确实支持嵌套递归结构。

0 投票
1 回答
6631 浏览

json - 何时使用 YAML 而不是 JSON

YAML 似乎比 JSON 格式的对象更具可读性,除了可读性之外,PyAML 与 JSON 相比有哪些优点或缺点?我们应该如何在两者之间做出决定,请注意,我不是在问两者之间的区别,而是关于为什么以及何时使用其中一个而不是另一个的建议?

0 投票
1 回答
3537 浏览

python - 为什么 PyYAML 仅仅在解析 YAML 文件上花费了这么多时间?

我正在用这种格式解析一个大约 6500 行的 YAML 文件:

我只想用PyYAML 库解析它(我认为在 Python 中没有更多的替代品:如何在 Python 中解析 YAML 文件)。

只是为了测试,我编写了该代码来解析我的文件:

使用命令执行脚本time以及我这次得到的脚本:

这个价值观似乎真的不太好。我只想用 JSON 测试相同的内容,只需先将相同的 YAML 文件转换为 JSON:

但是执行时间要好得多:

为什么 PyYAML 解析 YAML 文件比解析 JSON 文件花费更多时间的主要原因是什么?是 PyYAML 的问题还是因为 YAML 格式难以解析?(应该是第一个)

编辑:

我添加了另一个使用 ruby​​ 和 YAML 的示例:

而且执行时间好!(或者至少没有 PyYAML 示例那么糟糕):

0 投票
1 回答
1583 浏览

python - PyYaml 期望标量但找到序列

我正在尝试使用 PyYaml 在我的 python 代码中加载用户定义的标签。对 pyYaml 加载器、构造器、表示器解析器、解析器和转储器没有太多经验。

下面是我能想出的代码:

这是我的 Yaml 文件:

看起来我的代码无法识别!Position用户定义的数据类型。

任何帮助都会得到帮助

问候。

0 投票
1 回答
472 浏览

python - 将 DictMixin.iterkeys 更改为 MutableMapping

我希望在我的代码中使用 OrderedDict,因为该项目的 Ruby 版本将 YAML 用于地图和设置,但 OrderedDict 尚未针对 Python 3 进行更新。

项目的Ruby版本使用这个文件:https ://mega.co.nz/#!zhYRwA4B!HceqC3-NmmN44U70--jMxiAWQ4wz5MdAeilteKAOnSM

我将导入行更改为:

我已经知道 v3 不使用 iterkeys 那么我如何将 iterkeys 更改为 MutableMapping 可以理解的内容?

我已经看过很多关于如何更改它的示例,但我不明白如何在这里使用它们。

也许我应该在 Python 3 中使用其他东西来支持 YAML 文件,也许?

编辑:我称我的文件为 yaml.py。我不应该那样做的。我也有一个不喜欢的文件路径。我已经删除它并且它有效。

编辑2:我刚刚意识到我搞砸了我的问题。它应该是关于 Python 中的 OMAP 而不是 YAML。我会为此提出一个不同的问题。谢谢你们的帮助。

0 投票
3 回答
18344 浏览

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

我正在尝试在 python 中创建一个创建自定义 python 对象的 yaml 序列。该对象需要使用在__init__. 然而,construct_mapping 函数似乎并没有构建嵌入序列(列表)和字典的整个树。
考虑以下:

这很好用,因为f保存了对l和对象的引用,这些对象在创建对象d实际上填充了数据。Foo

现在,让我们做一些更复杂的事情:

现在我们得到以下错误

这是因为 yaml 构造函数是在嵌套之前的外层开始,在所有节点完成之前构造对象。有没有办法颠倒顺序并首先从深度嵌入(例如嵌套)对象开始?或者,有没有办法至少加载节点的对象之后进行构造?

0 投票
1 回答
1057 浏览

python - 在pyyaml中表示具有相同基类的不同类的实例

我有一些单元测试,并希望将每个测试运行的结果存储为 YAML 文件以供进一步分析。YAML 格式的转储数据以多种方式满足我的需求。但是测试属于不同的套装,结果有不同的父类,这是我所拥有的示例:

每个测试都可以有自己的父类。

我已经为所有带有方法的类添加了自己的基类__getstate__,但由于某种原因它不起作用:

文档说我可以为每个类制作代表,所以我尝试了一下并编写了以下代码:

同时:

即使在那之后safe_dump也不起作用。但是如果我做了这个技巧,那么它就可以工作,我可以得到结果:

但这意味着我需要记录所有可能出现的情况,也就是说,嗯……至少,看起来并不聪明。实际上我的真实result是更复杂的字典,从不同地方收集的测试等。

所以,问题是,我做错了什么,__getstate__或者我如何才能使 pyyaml 与特定基类的所有实例一起工作,而只有一个代表注册。