問題タブ [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.
python - Python yaml 出力 - 浮動小数点精度?
私は pyyaml を使用して Python 辞書から yaml ファイルを出力していますが、浮動小数点数がファイルに書き込まれるときに浮動小数点数の精度または出力形式を設定する方法を知りたいと思っています。
これを処理する yaml.dumper を作成するにはどうすればよいですか?
python - PyYAMLでオブジェクトをシリアル化するときにメンバーを無視するにはどうすればよいですか?
Trivial._ignore
このオブジェクトをシリアル化するときにメンバーを無視するにはどうすればよいですか?
版画
python - 関数呼び出しをエイリアスに適用するにはどうすればよいですか?
私の目標は、以前に定義したノードを簡単に「フィルタリング」できるようにすることです。次の架空の YAML ファイルについて考えてみます。
*fruitref
カスタム関数(つまり、以前に定義されたオブジェクト、この場合はマップ) を引数として呼び出して戻り値を取得するには、YAML ファイルまたはこのファイルを解析する Python コードで何を定義する必要がありますか? ターゲットは、以前に定義された値 (マップ、シーケンスなど) を「フィルタリング」するためのシンプルで簡潔な構文です。
ノート
!
次のエラーのために、コンストラクトタグ *
エイリアスが無効な YAML であるように思われます。
これは、必要な構文を達成できないことを意味する可能性が最も高いですが、簡潔さには気を配っています (というか、ターゲット ユーザーはそうするでしょう)。
通ったルート
YAML:!!python/object/apply:__main__.rotten [*fruitref]
機能しますが、意図した用途には冗長すぎます。複数の引数は必要ありません。ユースケースは常にエイリアス (以前に定義されたマップ/シーケンス/オブジェクト) のフィルターです。
YAML:%TAG !f! !!python/object/apply:__main__.
おそらく!f!rotten [*fruitref]
受け入れられるでしょうが、%TAG
ディレクティブを利用する方法が見つかりません。
編集: !!
PyYAML 3.10 では機能しないことがわかりました。次のような完全な URL でなければなりません。%TAG !f! %TAG !f! tag:yaml.org,2002:python/object/apply:__main__.
パイソン:yaml.add_constructor
add_constructor
クラスの特定のインスタンスにマップを「キャスト」するために既に使用しています。注意点は、タグ エイリアスが無効な YAML のように見えることです。
これまでで最高
add_constructor('!rotten', filter_rotten)
Python と!rotten [*fruitref]
YAML では機能しているようですが、可能であれば角括弧を省略する方法を考えています。
python - PyYAML リストに文字列を追加
私は PyYAML にかなり慣れていないので、すべてを理解していません。リストを含む YAML ファイルがあります。
Pythonファイルでリストを取得する方法を見つけることができましたが、リストに別の文字列を追加してYAMLファイルに保存する方法はわかりませんでした。だからそれはなるだろう
助けてください!YAML ファイルの読み取りに使用するコードは次のとおりです。
python - 他の YAML 形式の python yaml.dump 形式リスト
次のように、Python オブジェクトを YAML ファイルにダンプします。
だがしかし
image d は大量のリストであり、人間が見るには出力が乱雑になります。
I use: を使用していますdefault_flow_style=False
が、これは新しい行リスト項目形式を使用しています。
私はすでに顧客のダンパーを使用してアンカーを停止しています。
yaml - この YAML フォーマット エラーを修正するにはどうすればよいですか?
新しい YAML ドキュメントの定義に取り組んでいますが、ファイルを処理しようとすると、yamllint から次のエラーが表示されます。
テストを実行すると、PyCharm で次のエラーが発生します。
ScannerError: " "、2 行目、11 列目では値のマッピングは許可されていません
<string>
: 名前: testFirstNameLower
次のコードの場合:
正しくフォーマットされているように見えますが、何が間違っているのかわかりません...
python - シリアル化時と逆シリアル化時の PyYAML パス
シンプルな GUI 開発ツールを含むゲーム エンジンに取り組んでいます。GUI ツールを使用すると、ユーザーはさまざまなエンティティとコンポーネントを定義し、構成ファイルに保存できます。ゲーム エンジン ランタイムが構成ファイルをロードすると、ゲームで使用するさまざまなエンティティとコンポーネントを作成する方法を決定できます。
構成ファイルの保存メカニズムには、PyYAML を使用しています。私が抱えている問題は、シリアル化プロセスが、PyYAML を介してファイルをロードして解析するモジュールとは異なるディレクトリにあるモジュールで発生するという事実に起因しています。
簡素化されたシリアライザー
これは、さまざまなゲーム オブジェクトを表すcontext
オブジェクトを受け取り、dict
それを構成ファイルに書き込みます。これは問題なく動作します。
エンジン内の簡略化されたデシリアライザー
ここで問題が発生します。ではyaml.load(config_file)
、特定のモジュールでさまざまな名前が見つからないため、エラーが発生します。なぜこれが起こっているのか理解しています。たとえば、構成ファイルをシリアル化すると、AssetComponent
(エンジン内のコンポーネント タイプ) が at としてリストされengine.common.AssetComponent
ます。ただし、デシリアライザーの観点からは、 は にあるAssetComponent
はずですcommon.AssetComponent
(デシリアライゼーション コード自体がengine
パッケージ内に存在するため) engine
。
PyYAML でシリアル化または逆シリアル化するときにパスを手動で処理する方法はありますか? 両方が同じ「視点」から起こるようにしたいと思います。
編集: 以下は、問題のある構成ファイルがどのように見えるかを示し、その後に手動で修正された構成がどのように見えるかを示しています
問題あり
修正済み
python - PyYAML でキーの名前を変更するにはどうすればよいですか
変更したい YAML ファイル (テンプレート) をロードしました (キーといくつかの値)。
例えば
PyYAML でキーを見つけて名前を変更するにはどうすればよいですか?
しかし、それはまだ変更を永続化していません