Extraer la cadena entre paréntesis – PYTHON

Tengo una cadena “Nombre (algo)” y estoy tratando de extraer la parte de la cadena entre paréntesis!

He probado las siguientes soluciones, pero no parece estar obteniendo los resultados que estoy buscando.

n.split('()') name, something = n.split('()') 

Puede usar una expresión regular simple para capturar todo entre paréntesis:

 >>> import re >>> s = 'Name(something)' >>> re.search('\(([^)]+)', s).group(1) 'something' 

La expresión regular coincide con el primer “(“, luego coincide con todo lo que no es un “)”:

  • \( coincide con el carácter “(” literalmente
  • el grupo de captura ([^)]+) coincide con cualquier cosa que no sea un “)”

Como una mejora en la respuesta de @Maroun Maroun:

 re.findall('\(([^)]+)', s) 

encuentra todas las instancias de cadenas entre paréntesis

Puedes usar split como en tu ejemplo pero de esta manera

 val = s.split('(', 1)[1].split(')')[0] 

o usando expresiones regulares

Puedes usar re.match :

 >>> import re >>> s = "name(something)" >>> na, so = re.match(r"(.*)\((.*)\)" ,s).groups() >>> na, so ('name', 'something') 

que coincide con dos (.*) que significa cualquier cosa, donde el segundo está entre paréntesis \( & \) .