PythonでpydanticとFakerを用いて日本語のダミーデータを生成する

スポンサーリンク

PythonでpydanticとFakerを用いて日本語のダミーデータを生成してみます。

今回はpydanticFakerとjsonを用います。2つ(pydanticFaker)のライブラリ・モジュールは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を用いて日本語のダミーデータを生成し、生成されたダミーデータを出力させることができました。

 

コメント

タイトルとURLをコピーしました