Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Viết hàm Python chuyển camelCase sang snake_case

Sử dụng regex (re module) để chèn dấu gạch dưới trước các chữ hoa và chuyển toàn bộ thành chữ thường.

Code

import re

def convert(name):
    # Chèn _ trước chữ hoa theo sau chữ thường/số: JavaBeans -> Java_Beans
    s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
    # Chèn _ trước chữ hoa theo sau chữ thường/số: Java_Beans -> Java_Beans (đã xong)
    # Xử lý trường hợp liên tiếp: XMLParser -> X_M_L_Parser -> xml_parser
    return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower()

print(convert('JavaBeans'))        # java_beans
print(convert('JavaStrutsSwing'))  # java_struts_swing
print(convert('XMLHttpRequest'))   # x_m_l_http_request

Đầu ra

java_beans
java_struts_swing
x_m_l_http_request

Giải thích regex

  1. (.)([A-Z][a-z]+): Tìm ký tự bất kỳ theo sau bởi chữ hoa + chữ thường (ví dụ: aB trong JavaBeans -> a_B).
  2. ([a-z0-9])([A-Z]): Tìm chữ thường/số theo sau bởi chữ hoa (xử lý chữ viết tắt như XML).
  3. .lower(): Chuyển toàn bộ thành chữ thường.

Lưu ý: Với từ viết tắt liên tiếp (XML, HTTP), kết quả sẽ tách từng chữ cái. Có thể cải tiến regex nếu muốn giữ nguyên từ viết tắt.