如何在Python中優雅地將CamelCase轉換為snake_case?

Barbara Streisand
發布: 2024-11-01 22:12:31
原創
626 人瀏覽過

How to Convert CamelCase to snake_case in Python Elegantly?

優雅的Python函數將CamelCase轉換為snake_case?

在Python中從CamelCase轉換為snake_case需要一種簡單而優雅的方法。本文探討了實現這種轉換的幾種有效方法,解決了命名約定的變更並提供了清晰的範例。

在Lookahead/Lookbehind 中使用正規表示式

最通用的方法利用帶有前向和後向斷言的正規表示式:

<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>
登入後複製

另一種避免方法使用前向/後向:

這個方法結合了兩個替換過程來處理各種命名約定。 🎜>

為了完整起見,這裡有一個將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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板