キャメルケースをスネークケースに変換するエレガントな Python 関数?
Python でキャメルケースからスネークケースに変換するには、シンプルかつエレガントなアプローチが必要です。この記事では、この変換を実現するためのいくつかの効果的な方法を検討し、命名規則のバリエーションに対処し、明確な例を示します。
先読み/後読みで正規表現を使用する
最も汎用性の高い方法先読みおよび後読みアサーションで正規表現を利用します:
<code class="python">import re def camel_to_snake(name): name = re.sub(r'(?<!^)(?=[A-Z])', '_', name).lower() return name</code>
このパターンは、大文字と小文字の境界を照合し、アンダースコアを挿入すると同時に小文字に変換します。
代替正規表現パターン
より複雑な場合については、次の代替正規表現を使用します:
<code class="python">pattern = re.compile(r"(\w+)([A-Z]\w+)") name = "_".join(pattern.findall(name))</code>
このパターンは、複数の大文字が連続して出現するケースを処理します。
「HTTPHeader」の変換を避けるため" から "h_t_t_p_header" までは、次のパターンを使用します:
<code class="python">pattern = re.compile(r"([a-z])([A-Z])") name = "_".join(pattern.findall(name))</code>
マルチパス置換
代替アプローチでは、先読み/後読みの使用を回避します:
<code class="python">def camel_to_snake(name): name = re.sub('(.)([A-Z][a-z]+)', r'_', name) return re.sub('([a-z0-9])([A-Z])', r'_', name).lower()</code>
このアプローチは、2 つの置換パスを組み合わせてさまざまな命名規則を処理します。
Snake Case から Pascal Case へ
完全を期すために、snake_case を PascalCase に変換する関数を次に示します。 :
<code class="python">def snake_to_pascal(name): name = ''.join(word.title() for word in name.split('_')) return name</code>
これらの関数は、Python での CamelCase 変換と Snake_case 変換に対する包括的なソリューションを提供し、さまざまな命名規則に対応します。
以上がPythonでCamelCaseをsnake_caseにエレガントに変換する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。