es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  ,

Answer

  1. Avatar for 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:

    import re
    
    def get_params(input_string):
        pattern = r'\$(\w+)'
        matches = re.findall(pattern, input_string)
        return tuple(matches)
    

    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:

    param_str = "Me gusta $cosa_que_me_gusta y no me gusta $cosa_que_no_me_gusta. ¿Qué le gusta a $persona_que_me_gusta?"
    print(get_params(param_str))
    # Salida: ('cosa_que_me_gusta', 'cosa_que_no_me_gusta', 'persona_que_me_gusta')
    

    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.

Comments are closed.