[解決済み] YAMLファイルをパースしてPythonのオブジェクトに読み込むには?
2022-09-16 06:21:28
質問
YAMLファイルをパースしてPythonオブジェクトに読み込むにはどうしたらよいですか?
例えば、このYAML。
Person:
name: XYZ
このPythonのクラスへ
class Person(yaml.YAMLObject):
yaml_tag = 'Person'
def __init__(self, name):
self.name = name
ちなみに私はPyYAMLを使っています。
どのように解決するのですか?
YAMLファイルが以下のような場合。
# tree format
treeroot:
branch1:
name: Node 1
branch1-1:
name: Node 1-1
branch2:
name: Node 2
branch2-1:
name: Node 2-1
そして、インストールした
PyYAML
をこのようにします。
pip install PyYAML
そして、Pythonのコードはこのようになります。
import yaml
with open('tree.yaml') as f:
# use safe_load instead load
dataMap = yaml.safe_load(f)
変数
dataMap
という変数には、ツリーデータを含む辞書が格納されています。もし
dataMap
をPrettyPrintで印刷すると、次のようなものが得られます。
{
'treeroot': {
'branch1': {
'branch1-1': {
'name': 'Node 1-1'
},
'name': 'Node 1'
},
'branch2': {
'branch2-1': {
'name': 'Node 2-1'
},
'name': 'Node 2'
}
}
}
さて、ここまでで、Pythonプログラムにデータを取り込む方法を見ました。データの保存も同じように簡単です。
with open('newtree.yaml', "w") as f:
yaml.dump(dataMap, f)
辞書ができたので、今度はそれをPythonのオブジェクトに変換しなければなりません。
class Struct:
def __init__(self, **entries):
self.__dict__.update(entries)
なら、使える。
>>> args = your YAML dictionary
>>> s = Struct(**args)
>>> s
<__main__.Struct instance at 0x01D6A738>
>>> s...
をクリックし、"をフォローします。 Pythonのdictをオブジェクトに変換する "です。
より詳細な情報については pyyaml.org と この .
関連
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] バイトを文字列に変換する
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] Pythonでオブジェクトが属性を持つかどうかを知る方法
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ネストされたPythonのdictをオブジェクトに変換する?
-
[解決済み】python setup.pyのアンインストール
-
[解決済み] DataFrameの文字列、dtypeがobjectの場合
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Python 言語を決定するには?