[Python-es] extraer cadena dentro de corchetes

Aldo Martinez Selleras aldo en caonao.cu
Mie Feb 1 21:52:02 CET 2012


saludos a todos, soy nuevo en la lista y en el mundo de python, entre en 
el por interes propio, debido a la referencia q tengo de la robustez del 
lenguaje de programacion, y tengo una tarea ahora con un archivo que 
necesito parsear y es el primer proposito que me he autoindicado para 
hacer con python.

resulta que es un archivo con un estructura determinada, y ya se como 
leer el archivo linea por linea, pero se me trabo el paragua al querer 
sacar una cadena que esta entre dos corchetes, pongo detalles

la estructura del archivo es esta
[cadena1]
attr1 = value1
attr2 = value2
attr3 = value3
attr4 = value4
attr5 = value5

[cadena2]
attr1 = value1
attr2 = value2
attr3 = value3
attr4 = value4
attr5 = value5

y ya logre hacer esto, que me gusta como funciona!

lineas = []

fichero = open("file.data", "r")

for linea in fichero.readlines():
	if not linea:
		break
	if linea[0] == '[':
		lineas.append(linea)
print lineas
fichero.close()


y esto me devuelve
[cadena1], [cadena2]

lo que me interesa guardar en lineas es solo la cadena dentro de los 
corchetes, pero he hecho mil pruebas y ninguna satisfactoria :( ; me 
parece que es por ser unos corchetes, como son caracteres q usan las 
expresiones regulares, el que mejor resultado me dio fue con sub.

re.sub('\[','',linea)
re.sub('\]','',linea)

pero me gustaria hacer esto q logro con dos lineas, hacerlo en una, o 
mejor, solo extraer el texto que esta dentro de los corchetes, esto me 
da como resultado que elimina los corchetes, pero es q no es eso lo q me 
interesa.

espero haber sido explicito

gracias de antemano


Más información sobre la lista de distribución Python-es