Dada una string en mayúsculas y minúsculas, escriba un programa en Python para convertir la string dada de mayúsculas y minúsculas en mayúsculas y minúsculas.
Ejemplos:
Input : GeeksForGeeks Output : geeks_for_geeks Input : ThisIsInCamelCase Output : this_is_in_camel_case
Veamos las diferentes formas en que podemos hacer esta tarea.
Método n.º 1: enfoque ingenuo
Esta es una implementación ingenua para convertir el caso de camello en caso de serpiente. Primero, inicializamos una variable ‘res’ con una lista vacía y le agregamos el primer carácter (en minúsculas). Ahora, cada vez que encontramos un alfabeto en mayúsculas, agregamos ‘_’ y el alfabeto (en minúsculas) a ‘res’; de lo contrario, solo agregamos el alfabeto.
Python3
# Python3 program to convert string # from camel case to snake case def change_case(str): res = [str[0].lower()] for c in str[1:]: if c in ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'): res.append('_') res.append(c.lower()) else: res.append(c) return ''.join(res) # Driver code str = "GeeksForGeeks" print(change_case(str))
geeks_for_geeks
Método #2: Comprensión de listas
Python3
# Python3 program to convert string # from camel case to snake case def change_case(str): return ''.join(['_'+i.lower() if i.isupper() else i for i in str]).lstrip('_') # Driver code str = "GeeksForGeeks" print(change_case(str))
geeks_for_geeks
Método n.º 3: Python reduce ()
El método Python reduce() aplica una función a todos los alfabetos de strings, donde quiera que encuentre un alfabeto en mayúsculas, agrega ‘_’ delante y reemplaza el alfabeto en mayúsculas con el alfabeto en minúsculas.
Python3
# Python3 program to convert string # from camel case to snake case from functools import reduce def change_case(str): return reduce(lambda x, y: x + ('_' if y.isupper() else '') + y, str).lower() # Driver code str = "GeeksForGeeks" print(change_case(str))
geeks_for_geeks
Método #4: expresión regular de Python
Python3
# Python3 program to convert string # from camel case to snake case import re def change_case(str): s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', str) return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).lower() # Driver code str = "GeeksForGeeks" print(change_case(str))
geeks_for_geeks
Publicación traducida automáticamente
Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA