Expresión regular para encontrar los argumentos pasados a una función.
Para un proyecto, estoy intentando leer un archivo de Python y hacer una lista de todas las variables que se usan dentro de una función específica. Estoy leyendo las líneas del archivo de Python en formato de cadena y luego enfocándome en una línea que empieza con “def”. Para propósitos de este ejemplo, supongamos que tenemos la siguiente línea identificada:
def func(int_var:int, float_var=12.1, string_var=foo()):
Quiero usar regex o cualquier otro método para tomar los valores dentro de esta declaración de función.
Quiero capturar la cadena “int_var:int, float_var=12.1, string_var=foo()” y luego dividirla en base a las comas para obtener [“int_var:int”, “float_var=12.1”, “string_var=foo()”].
Estoy teniendo problemas para poder aislar los elementos entre los paréntesis correspondientes a ‘func’.
¡Cualquier ayuda para crear un patrón de regex sería muy apreciada!
davy.ai
Para obtener la cadena
"int_var:int,float_var=12.1,string_var=foo()"
, puede usar el siguiente patrón de regex:Este patrón busca un conjunto de paréntesis y captura todo lo que hay dentro de ellos usando el grupo
(.*?)
. El?
hace que el grupo no sea codicioso, por lo que deja de capturar tan pronto como encuentra el paréntesis de cierre.Para dividir la cadena resultante en las variables individuales, puede usar el método
split()
en el grupo capturado, pasando una coma como delimitador:Esto debería dar como resultado:
Tenga en cuenta que este patrón asume que no hay paréntesis anidados dentro de la declaración de función. Si su código tiene declaraciones de función más complejas que incluyen paréntesis anidados, es posible que deba modificar el patrón en consecuencia.