Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menukar CamelCase ke snake_case dengan cekap dalam Python?

Bagaimana untuk menukar CamelCase ke snake_case dengan cekap dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-10-28 00:20:29331semak imbas

How to efficiently convert CamelCase to snake_case in Python?

CamelCase kepada snake_case Penukaran dalam Python

Penukaran daripada CamelCase kepada snake_case ialah transformasi yang kerap dalam pengaturcaraan Python. Soalan ini menumpukan pada mencari cara yang cekap untuk melaksanakan tugas ini.

Penyelesaian Cadangan

Kod yang disediakan menggunakan modul semula untuk mencapai penukaran ini:

import semula

name = 'CamelCaseName'
name = re.sub(r'(?print(name) # camel_case_name

Kod ini menggunakan ungkapan biasa untuk memasukkan garis bawah sebelum huruf besar, dan kemudian menukar rentetan yang terhasil kepada huruf kecil. Hasilnya ialah perwakilan sarung ular yang diingini.

Pendekatan Alternatif

Jika prestasi membimbangkan, regex boleh disusun terlebih dahulu:

corak = re.compile(r'(?nama = pattern.sub('_', name).lower()

Untuk kes yang lebih lanjut, pas penggantian berganda boleh digunakan:

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()

Selain itu, kod boleh dilanjutkan untuk mengendalikan berbilang garis bawah:

def to_snake_case(name):

name = re.sub('(.)([A-Z][a-z]+)', r'_', name)
name = re.sub('__([A-Z])', r'_', name)
name = re.sub('([a-z0-9])([A-Z])', r'_', name)
return name.lower()

Snake_case to PascalCase Conversion

Selain itu penukaran terbalik daripada snake_case kepada PascalCase disediakan:

name = 'snake_case_name'
name = ''.join(word.title() untuk perkataan dalam name.split('_'))
cetak(nama) # SnakeCaseName

Atas ialah kandungan terperinci Bagaimana untuk menukar CamelCase ke snake_case dengan cekap dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn