PythonでpydanticとFakerを用いて日本語のダミーデータを生成してみます。
今回はpydanticとFakerとjsonを用います。2つ(pydanticとFaker)のライブラリ・モジュールはPythonの標準ライブラリではありませんので、事前にインストールする必要があります。jsonはPythonの標準ライブラリとなります。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows11)
■pydanticとFakerを用いて日本語のダミーデータを生成する
では、早速pydanticとFakerを用いて日本語のダミーデータを生成するスクリプトを書いていきます。
■コード
from pydantic import BaseModel from faker import Faker import json fake = Faker('ja_JP') class Person(BaseModel): name: str age: int email: str def generate_fake_person(): person_data = { 'name': fake.name(), 'age': fake.random_int(min=18, max=65), 'email': fake.email(), } person = Person(**person_data) return person fake_person = generate_fake_person() fake_person_dict = fake_person.dict() fake_person_json = json.dumps(fake_person_dict, ensure_ascii=False).encode('utf-8').decode('utf-8') print(fake_person_json)
まずは必要なモジュールをインポートします。今回はpydanticモジュールからBaseModelクラスをインポートし、fakerモジュールからFakerクラスをインポートしています。
インポート後、Fakerクラスのインスタンスを作成し、’ja_JP’を指定して日本語のダミーデータを生成するように設定しています。設定後、BaseModelクラスを継承したPersonクラスを定義します。このクラスは、name、age、emailという3つのフィールドを持ちます。次にgenerate_fake_personという関数を定義します。この関数は、ダミーデータを生成してPersonモデルのインスタンスを作成し、それを返します。その後、generate_fake_person関数内で、person_dataという辞書を作成します。この辞書には、fake.name()で生成されたランダムな名前、fake.random_int(min=18, max=65)で生成された18歳から65歳までのランダムな整数、およびfake.email()で生成されたランダムなメールアドレスが格納されます。
格納後、「person = Person(**person_data)」と記述し、Personモデルのインスタンスを作成します。なお、「**person_data」は、person_dataの内容をキーワード引数として渡すことを意味します。つまり、name、age、emailフィールドに対応する値が設定されます。設定後、「return person」で生成されたPersonインスタンスを返すようにします。
次にgenerate_fake_person関数を呼び出し、ダミーデータで初期化されたPersonインスタンスを取得します。次に「fake_person_dict = fake_person.dict()」と記述し、Personインスタンスの辞書形式の表現を取得します。これにより、name、age、emailというキーを持つ辞書が生成されます。
生成後、「fake_person_json = json.dumps(fake_person_dict, ensure_ascii=False).encode(‘utf-8’).decode(‘utf-8’)」と記述し、fake_person_dictをJSON形式の文字列に変換します。json.dumps関数を使用して辞書をJSON文字列に変換し、ensure_ascii=Falseを指定して日本語文字を正しくエンコードします。その後、文字列をUTF-8でエンコードし、さらにUTF-8でデコードしています。これにより、文字化けせずに日本語の文字が正しく表示されるようになります。
最後に「print(fake_person_json)」と記述し、生成されたダミーデータのJSON表現を出力します。
■検証・実行
今回書いたスクリプトを「p_dummy.py」という名前でPythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。
実行してみると、pydanticとFakerを用いて日本語のダミーデータを生成し、生成されたダミーデータを出力させることができました。
コメント