Re: [Python-es] extraer cadena dentro de corchetes
Te lo digo de memoria: import re string = open('file.data', 'r').read() regex = re.compile(\[(.*?)\]) # Run findall regex.findall(string) [u'cadena1', u'cadena2'] string.close() -- lopz es libre, usa -- GNU/linux gentoo +--[RSA 2048]--+ | ..o.o=+ | | o =o*.+ | | . . *oO . | | .EBoo | | o.S | +--[lopz.org]--+ ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] extraer cadena dentro de corchetes
gracias, este funciono perfecto para lo que necesito! ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] extraer cadena dentro de corchetes
bueno, disculpenme, pero me deslumbre un poco con la sencillez de los codigos de python, el codigo que envio el colega Jhonlier esta super, pero el tema del modulo ConfigParser esta mas que genial, xq ya este me evita mchas molestias de entrar en temas del codigo que este resuelve, me refiero a lo de extraer los atributos de cada seccion, wao, eso esta MUY pero MUY bueno gracias a todos PD: algun libro que recomienden para leer poco a poco, preferiria que fuera lo mas practico posible ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
[Python-es] extraer cadena dentro de corchetes
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 ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] extraer cadena dentro de corchetes
[cadena1] attr1 = value1 attr2 = value2 attr3 = value3 attr4 = value4 attr5 = value5 [cadena2] attr1 = value1 attr2 = value2 attr3 = value3 attr4 = value4 attr5 = value5 Hola, tiene todo el aspecto de los tipicos ficheros de conf. Si ese es el proposito, quizas te ayudaria usar el modulo que python trae para manipular ficheros de este tipo http://docs.python.org/library/configparser.html#module-ConfigParser Suerte, Jose P.S. perdon por la ortografia. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] extraer cadena dentro de corchetes
El 1 de febrero de 2012 21:52, Aldo Martinez Selleras a...@caonao.cuescribió: 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 ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] extraer cadena dentro de corchetes
On 02/01/2012 04:28 PM, Kiko wrote: El 1 de febrero de 2012 21:52, Aldo Martinez Selleras a...@caonao.cu mailto:a...@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 muchas gracias ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] extraer cadena dentro de corchetes
2012/2/1 Aldo Martinez Selleras a...@caonao.cu: On 02/01/2012 04:28 PM, Kiko wrote: El 1 de febrero de 2012 21:52, Aldo Martinez Selleras a...@caonao.cu mailto:a...@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. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] extraer cadena dentro de corchetes
Usa ConfigParser como te recomendo el amigo,... Jose Caballero te va a aliviar todo el proceso ese por completo. import ConfigParser config_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'Config.cfg') # donde el config.cfg es el fichero que mostrastes arriba de tus atributos y valores. config = ConfigParser.RawConfigParser() config.read(config_file) y luego solo tienes que decir value_X = config.get('Cadena1', 'attri1') y listo usar value_X pa lo q necesites Suerte El 1 de febrero de 2012 17:56, Aldo Martinez Selleras a...@caonao.cuescribió: On 02/01/2012 04:28 PM, Kiko wrote: El 1 de febrero de 2012 21:52, Aldo Martinez Selleras a...@caonao.cu mailto:a...@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#**stringshttp://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 muchas gracias __**_ Python-es mailing list Python-es@python.org http://mail.python.org/**mailman/listinfo/python-eshttp://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.**com/http://python-es-faq.wikidot.com/ -- Antonio Peña Secure email with PGP 0x8B021001 available at http://pgp.mit.edu Fingerprint: 74E6 2974 B090 366D CE71 7BB2 6476 FA09 8B02 1001 ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] extraer cadena dentro de corchetes
Bueno ya se ha escrito bastante sobre el asunto pero igual te pongo mi versión: lineas_corchetes = [] fichero =open(file.data, rU) #Creo que la U le aporta genericidad multiplataforma for linea in fichero: #No hace falta poner readlines si es un fichero texto l = linea.strip() #Quita los espacios iniciales y finales y los saltos de linea if l and l.startswith('[') and l.endswith(']'): #No esta vacia la linea y empieza y termina en corchetes lineas_corchetes.append(l[1:-1]) fichero.close() print lineas_corchetes En lineas_corchetes queda lo que quieres. Espero que sirva para algo pues he usado bastante cosas como esas para ficheros de configuración de mis aplicaciones Python. Saludos y suerte. J. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/