1

私はこの数値コードを持っていますが、これまではprint、計算の実行中にいくつかの情報を提供するためにたくさんの s がありました。

情報を処理しやすくするために、YAML を使用しています。C++ の場合、次の構文が存在します。

YAML::Emitter out;
out << YAML::BeginSeq;
out << "eggs";
out << "bread";
out << "milk";
out << YAML::EndSeq;

これは使用するのに十分です。Pythonにも同様のものが存在するのではないかと思います。私が今遭遇した大まかな同等物は PyYAML であり、上記の同等物は (私の間違いでなければ) 次のようになります。

print yaml.emit([yaml.StreamStartEvent(),
                 yaml.DocumentStartEvent(),
                 yaml.SequenceStartEvent(anchor=None, tag=None, implicit=True),
                 yaml.ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'eggs'),
                 yaml.ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'bread'),
                 yaml.ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'milk'),
                 yaml.SequenceEndEvent()
               ])

うわー、それは冗長です。冗長でない構文/Python YAML パッケージを知っていますか? もちろん常にありyaml.dump()ますが、データが即座に書き出されることが重要です。

4

1 に答える 1

1

PyYAML は、その出力が常に整形式であることを保証しようとするため、部分的なドキュメントを出力することはできません。

解決策は、常に完全なドキュメントを発行することです!

import yaml
print yaml.dump(["eggs", "bread", "milk", "squick"], explicit_start=True)
print yaml.dump(dict(a=1, b=2, c=3), explicit_start=True)

これにより、 でロードできる 2 つのドキュメントを含むストリームが出力されますyaml.load_all

于 2012-06-12T15:15:14.610 に答える