Pythonでschemaを用いて与えられたデータがスキーマに適合するか確認してみます。
今回はschemaを用います。このライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows11)
■schemaを用いて与えられたデータがスキーマに適合するか確認する
では、早速schemaを用いて与えられたデータがスキーマに適合するか確認を行うスクリプトを書いていきます。
■コード
import schema # スキーマの定義 person_schema = schema.Schema({ 'name': str, 'age': int, 'email': schema.Or(None, str) }) # データのバリデーション def validate_person(person): try: person_schema.validate(person) print("データはスキーマに適合しています!") except schema.SchemaError as e: print("データはスキーマに適合していません。エラーメッセージ:") print(e) # データの例 person1 = { 'name': '田中 テスト太郎', 'age': 25, 'email': 'tanaka@example.com' } person2 = { 'name': '久岡 団十郎', 'age': '29', 'email': 'h_dan@example.com' } person3 = { 'name': '中村 テスト治郎', 'age': 40 } # データのバリデーションの呼び出し validate_person(person1) validate_person(person2) validate_person(person3)
まずはschemaモジュールをインポートします。これにより、スキーマの定義やデータのバリデーションに必要なクラスや関数が使用できるようになります。
次に`schema.Schema`クラスを使用して、`person_schema`という変数にスキーマを定義します。スキーマは、ディクショナリ形式で指定します。ここでは、`name`が文字列、`age`が整数、`email`が文字列または`None`のいずれかであることを定義しています。
その後、def文を用いて`validate_person`という関数を定義します。この関数は、引数として`person`を受け取り、与えられたデータがスキーマに適合しているかどうかを確認します。さらに`try-except`構文を使用して、`person_schema.validate(person)`を実行します。`person_schema.validate(person)`は、与えられたデータがスキーマに適合しているかどうかを検証します。もしデータがスキーマに適合していない場合は、`schema.SchemaError`が発生し、それを`except`節でキャッチしてエラーメッセージを表示します。
その後、`person1`という変数に、スキーマに適合するデータを定義します。今回は`name`には日本語の文字列、`age`には整数、`email`にはメールアドレスの文字列を指定しています。同じようにして`person2`と`person3`を定義します。
定義後、`validate_person`関数を呼び出し、`person1`を引数として渡します。この呼び出しにより、与えられたデータがスキーマに適合しているかどうかが検証されます。同様に、`person2`と`person3`に対してもバリデーションが行われます。
なお、今回は日本語の文字列を含んだデータをバリデーションしていますが、`schema`モジュールは文字列のバリデーションに対して特別な処理は行いません。したがって、このコードは日本語の文字列にも適用可能です。
■検証・実行
今回書いたスクリプトを「s_d.py」という名前でPythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
実行してみると、schemaを用いて与えられたデータがスキーマに適合するかどうかの確認が行われ、結果を表示させることができました。
コメント