[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