Python サーバー プログラミング: YAML 形式の解析に PyYAML を使用する
インターネット テクノロジーの急速な発展に伴い、サーバー プログラミングの重要性がますます高まっています。強力なプログラミング言語として、Python は開発者の間でますます人気が高まっています。 PyYAML は、Python で最も一般的に使用される YAML 形式パーサーの 1 つです。この記事では、開発者が Python サーバーをより適切にプログラムできるように、PyYAML を使用して YAML 形式を解析する方法を紹介します。
YAML とは何ですか?
YAML (Yet Another Markup Language) は軽量なデータ交換形式で、XML や JSON などのデータ形式と比較して読み書きが容易な形式です。 YAML 形式のデータはシリアル化され、人間が読み取って理解することができます。 YAML はもともと、XML が煩雑で読みにくいという問題を解決するために開発されました。
YAML 形式の例:
- name: Alice age: 25 occupation: programmer - name: Bob age: 30 occupation: designer
PyYAML を使用した YAML 形式の解析
PyYAML は、Python で最も一般的に使用される YAML 形式パーサーの 1 つです。これは、YAML 1.1 および 1.2 のすべてのコア機能をサポートするフル機能の YAML パーサーです。 PyYAML を使用して YAML 形式を解析するのは非常に簡単で、yaml.load()
メソッドを通じて YAML 形式のデータを Python オブジェクトに変換するだけです。
import yaml with open("data.yaml", 'r') as stream: data = yaml.load(stream) print(data)
上記のコードは、data.yaml
ファイル内の YAML 形式のデータを読み取って Python オブジェクトに変換し、最後に出力を出力します。
PyYAML では、yaml.dump()
メソッドを使用して、Python オブジェクトを YAML 形式のデータに変換することもできます。
import yaml data = [ {'name': 'Alice', 'age': 25, 'occupation': 'programmer'}, {'name': 'Bob', 'age': 30, 'occupation': 'designer'} ] print(yaml.dump(data))
上記のコードは、Python リストを YAML 形式のデータに変換し、出力を出力します。
PyYAML の高度な機能
基本的な YAML 形式の解析とシリアル化に加えて、PyYAML は、型変換、カスタム タグ、検証、拡張機能などの多くの高度な機能も提供します。次に、これらの機能のいくつかをさらに詳しく見ていきます。
型変換
PyYAML は、YAML 形式のデータから、文字列、整数、浮動小数点数、辞書、リストなどを含む Python 組み込み型への自動変換をサポートします。たとえば、次の YAML 形式データを Python オブジェクトとして読み取ります。
date: 2021-06-25 count: 300 price: 99.99
読み取りプロセス中に、PyYAML は date
フィールドを Python の datetime.date## に自動的に変換します。オブジェクトの場合、
count フィールドは Python の整数型に変換され、
price フィールドは Python の浮動小数点型に変換されます。
import datetime class CustomDate: def __init__(self, year, month, day): self.date = datetime.date(year, month, day)
import yaml def custom_date_representer(dumper, data): return dumper.represent_scalar('!CustomDate', '{}/{}/{}'.format(data.date.year, data.date.month, data.date.day)) def custom_date_constructor(loader, node): value = loader.construct_scalar(node) year, month, day = map(int, value.split('/')) return CustomDate(year, month, day) data = [ CustomDate(2021, 6, 25), CustomDate(2021, 6, 26) ] yaml.add_representer(CustomDate, custom_date_representer) yaml.add_constructor('!CustomDate', custom_date_constructor) print(yaml.dump(data))
!CustomDate を定義し、対応する
representer メソッドと
constructor メソッドを定義して、カスタム クラスを YAML 形式に変換し、元のオブジェクトに復元します。
import yaml with open("data.yaml", 'r') as stream: try: data = yaml.safe_load(stream) except yaml.YAMLError as exc: print(exc)
yaml.safe_load() メソッドを使用して YAML 形式データをロードし、データの正確さに基づいて、対応するデータの情報を取得します。
import yaml class CustomType: pass def represent_custom_type(dumper, data): return dumper.represent_scalar('!CustomType', None) yaml.add_representer(CustomType, represent_custom_type) data = CustomType() print(yaml.dump(data))
CustomType を新しいタグ
!CustomType を追加し、対応する
representer メソッドを定義して、それを YAML 形式のデータに変換します。
以上がPython サーバー プログラミング: PyYAML を使用した YAML 形式の解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。