如何防止 YAML 在没有新行的情况下转储长行
Posted
技术标签:
【中文标题】如何防止 YAML 在没有新行的情况下转储长行【英文标题】:How to prevent YAML to dump long line without new line 【发布时间】:2013-09-02 01:54:13 【问题描述】:在转储/序列化输入中具有长行的数据时,pyyaml 会在新行中添加额外的缩进 - 这很烦人,我们如何避免在两行/多行中进行这种转换?
例如
在 [1] 中:
x = "-c /home/user/test/test2/test23/tet/2s/test1/stest/longdirectory1/directory2/ --optnion12 --verbose"
在[2]中:import yaml
在[3]中:print (yaml.dump([dict(ATTRIBUTES=[dict(CONFIG=x)])], default_flow_style=False))
一个错误
- ATTRIBUTES:
- CONFIG: -c /home/user/test/test2/test23/tet/2s/test1/stest/longdirectory1/directory2/
--optnion12 --verbose
应该是这样的
- ATTRIBUTES:
- CONFIG: -c /home/user/test/test2/test23/tet/2s/test1/stest/longdirectory1/directory2/ --optnion12 --verbose
【问题讨论】:
你看到options ofdump
了吗?我没有测试它,但似乎有些选项可以帮助你。
@MathieuMarques 谢谢,这是我应该寻找的。它奏效了。
【参考方案1】:
感谢@MathieuMarques 建议查看@dump 选项和提供的链接,YAML 文档不够好,无法找到它。
无论如何,解决方案是为dump
函数指定width
参数。
即yaml.dump(data, width=1000)
@RandomCoder 建议的一种更好的方法是使用yaml.dump(data, width=float("inf"))
作为永久解决方案。
【讨论】:
更永久的解决方案是:yaml.dump(data, width=float("inf"))
但是,在使用更快的基于 C (LibYAML) 的转储程序(例如 Dumper=yaml.CSafeDumper
)时,您不能使用 width=float("inf")
。在这种情况下,width=2147483647
之类的就足够了。
或者你可以使用width=math.inf
,它可能比float("inf")
更具可读性(你需要import math
)。以上是关于如何防止 YAML 在没有新行的情况下转储长行的主要内容,如果未能解决你的问题,请参考以下文章
在 Prettier 中,如何防止 HTML 结束标记的“>”字符被放置在新行上?