当用很长的键转储dict时,我得到如下结果:
? ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.GVL.Data.DateTime.NewDateTime
: 2018-10-11 17:59
? ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.GVL.Data.DateTime.SetNewDateTime
: 2018-10-11 17:59
? ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.GVL.Data.FeedFlow.Auger[].Ascend
: 2018-10-11 17:59
? ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.GVL.Data.FeedFlow.Auger[].Descend
: 2018-10-11 17:59
相反,我想:
像这样:
ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.GVL.Data.DateTime.NewDateTime: 2018-10-11 17:59
ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.GVL.Data.DateTime.SetNewDateTime: 2018-10-11 17:59
ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.GVL.Data.FeedFlow.Auger[].Ascend: 2018-10-11 17:59
ns=4;s=|var|CODESYS Control for Raspberry Pi SL.Application.GVL.Data.FeedFlow.Auger[].Descend: 2018-10-11 17:59
我怎样才能做到以上几点?你知道吗
我当前的转储命令如下:
yaml.dump(
some_dict,
open(shades, 'w+'),
default_flow_style=False,
width=float("inf")
)
现在,我正在通过转储变量内容和替换字符串来进行修补,如下所示:
content = content.replace("? ","")
content = content.replace("\n:",":")
首先,输出是非常好的YAML。我装回什么 你甩了我。看起来不太好,但这样做是必要的 因为键很长,不适合默认的行长度。你知道吗
您提供了
width
参数,但问题是float("inf")
不是合适的值,PyYAML不会警告您 关于这个。您应该只使用一个适当大的整数值 相反,如下面的代码所示(假设数据在文件中shades.yaml
:输出:
不,你不能做
ONEMILLION = int(float("inf"))
,你会得到一个错误。你知道吗我在这里使用
safe_dump
,不是因为它是必要的,而是因为它是必要的 足够了,因为它使您使用load()
的可能性更小 在PyYAML是潜在的不安全。你知道吗如果你想和我一样鲁阿迈尔.亚马尔(免责声明:我是 例如,如果您需要与yaml1.2兼容,或者需要对 比PyYAML能提供的缩进,你可以做:
同样的结果。你知道吗
相关问题 更多 >
编程相关推荐