[Python-es] extraer cadena dentro de corchetes
Carlos Zuniga
carlos.zun en gmail.com
Mie Feb 1 23:09:57 CET 2012
2012/2/1 Aldo Martinez Selleras <aldo en caonao.cu>:
>
> On 02/01/2012 04:28 PM, Kiko wrote:
>>
>>
>>
>> El 1 de febrero de 2012 21:52, Aldo Martinez Selleras <aldo en caonao.cu
>> <mailto:aldo en caonao.cu>> escribió:
>>
>>
>> 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]
>>
>> Con lo que tienes hecho puedes hacer (solo he incluido lo que está en
>> negrita, el resto es exactamente tu programa):
>>
>> lineas = []
>>
>> fichero = open("file.data", "r")
>>
>> for linea in fichero.readlines():
>> if not linea:
>> break
>> if linea[0] == '[':
>> lineas.append(linea*[1:-1]*)
>>
>> print lineas
>> fichero.close()
>>
>> Mira en [1] para ver más.
>>
>> [1] http://docs.python.org/tutorial/introduction.html#strings
>
>
> eso me devuelve el arreglo, pero de esta forma :(
>
> 'cadena1]','cadena2]'
>
> la verdad en casi todos los intentos q hice, me daba mas problemas con el
> corchete del final, es como q mas conflictivo este
>
No será que hay espacios después del corchete?
Prueba con `linea.strip()[1:-1]`
Saludos
--
Linux Registered User # 386081
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.
Más información sobre la lista de distribución Python-es