> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 CamelCase를 snake_case로 우아하게 변환하는 방법은 무엇입니까?

Python에서 CamelCase를 snake_case로 우아하게 변환하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-01 22:12:31
원래의
668명이 탐색했습니다.

How to Convert CamelCase to snake_case in Python Elegantly?

CamelCase를 snake_case로 변환하는 우아한 Python 함수?

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를 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿