ホームページ  >  記事  >  バックエンド開発  >  PythonでCamelCaseをsnake_caseにエレガントに変換する方法?

PythonでCamelCaseをsnake_caseにエレガントに変換する方法?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-01 22:12:31550ブラウズ

How to Convert CamelCase to snake_case in Python Elegantly?

キャメルケースをスネークケースに変換するエレガントな 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。