¿Cómo obtener los nombres de los parámetros de una cadena parametrizada?
Lo que me gustaría es:
param_str = “Me gusta $thing_I_like y no me gusta $thing_I_dislike. ¿Qué le gusta a $person_I_like?”
get_params(param_str) # -> (“thing_I_like”, “thing_I_dislike”, “person_I_like”)
He revisado string.Template, sólo hace sustituciones.
¿Existe alguna forma en la biblioteca estándar de hacer esto? Porque en caso de regex, tendría que haber una comprobación para saber si $smt es realmente un nombre de variable Python válido, y así sucesivamente.
davy.ai
Como experto en TI especializado en Python, estás buscando una manera estándar de biblioteca para extraer parámetros de una cadena dada. Una posible solución es utilizar expresiones regulares, aunque esto plantea algunas preocupaciones sobre validez y seguridad.
Alternativamente, puedes definir tu propio formato para los parámetros y escribir un método personalizado para extraerlos. Por ejemplo, podrías usar una cadena con marcadores de posición como
$nombre_del_parametro
y buscar todas las apariciones de este patrón en la cadena de entrada.Aquí hay una función de Python que implementa este enfoque:
Esta función utiliza el módulo
re
para buscar todas las palabras (\w+
) que son precedidas por un signo de dólar ($
). Los resultados obtenidos se devuelven como una tupla.Puedes probar la función con la cadena de ejemplo proporcionada:
Ten en cuenta que esta solución asume que los nombres de los parámetros son identificadores válidos de Python (es decir, que consisten en letras, dígitos y guiones bajos y no comienzan con un dígito). Si necesitas validación adicional, puedes modificar la expresión regular para adaptarla a tus necesidades.