LoginSignup
0
0

【Python】スネークケースの文字列をキャメルケースの文字列にする方法を2種類紹介 (+モデルクラスにアクセスする方法)

Last updated at Posted at 2023-07-03

概要

company_codeと言うオブジェクトをCompanyCodeと言うモデル名にする(スネークケースをキャメルケースにする)方法を2つ紹介します。また単にモデル名を生成するだけではなく、モデルクラスにアクセスする方法も記載します。

サンプルコード解説

  • str.title()メソッドを使用する方法
  • capitalize()メソッドを使用する方法

str.title()メソッドを使用する方法

object_name = 'company_code'

def get_model_from_object_name(object_name):
    model_name = object_name.title().replace('_', '')
    return model_name

model = get_model_from_object_name(object_name)
print(model)

# 出力結果
# CompanyCode

str.title()メソッドは、文字列内の単語の先頭文字を大文字に変換するメソッド。その後、replace_を取り除くという方法です。
str.title()メソッドは、スペースやアンダースコアが単語の区切りと判断されます。それ以外にもハイフン、ピリオド、スラッシュなども認識されます。

capitalize()メソッドを使用する方法

object_name = 'company_code'

def get_model_from_object_name(object_name):
    model_name = ''.join(word.capitalize() for word in object_name.split('_'))
    return model_name

model = get_model_from_object_name(object_name)
print(model)

# 出力結果
# CompanyCode

capitalize()メソッドは、文字列内の最初の文字を大文字に変換するメソッド。

split('_')によって文字列がアンダースコアで分割され、各単語がリストとして取得された後、forループでリスト内の各単語をキャピタライズし、join()メソッドで結合する、という方法です。

モデルクラスを取得したい場合

文字列として与えられたモデル名をもとに、対応するモデルクラスを取得したい場合は、関数の返り値をreturn globals()[model_name]とします。これにより、データベース内のモデルとの対応や動的なオブジェクト作成などの処理に利用することができます。

globals()はグローバルスコープ内の変数やオブジェクトを格納している辞書です。

該当するキーが見つからなかった場合、KeyError例外が発生します。

取り急ぎローカル環境で触るために使いましたが、グローバルスコープ内の全ての変数を辞書して返すので可読性や保守性に欠ける可能性もあります(というよりあまり推奨されない)。変数をまとめて辞書で管理するとか、引数に渡す関数にするとかした方が良いかもですね。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0