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 ([^)]+)
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 \(
& \)
.