[Python] Hilo general

Kaiserlau

metes un try con su except cuando salga del indice y a volar

1 respuesta
HeXaN

#88 Por poner otra más "noob friendly":

cadena = 'agapito'
for posicion, letra in enumerate(cadena):
    print (letra, posicion)
print("La cadena {} tiene una longitud de {}".format(cadena, posicion))
1 respuesta
B

#89 Genial, funciona, pero ¿porqué? xD ¿Se supone que la condición "c in cadena" implica que se ejecuta mientras pueda contar a lo largo de la cadena o algo así?

#90 ¿Cómo funciona lambda y map? :wow:

#91 Aún no he llegado a los try, sé que existen pero se supone que lo explican más adelante. Supongo que la intención es practicar lo básico.

Muchas gracias a los 3 ^^

#92 Estupendo para newbies como yo, thx!!

2 respuestas
HeXaN

#93 Respecto a tu pregunta de por qué funciona, échale un ojo a lo que son iteradores.

http://anandology.com/python-practice-book/iterators.html

1 1 respuesta
B

#94 Va, si lo he entendido bien entonces los for tienen una especie de StopIteration interno cuando no hay más elementos que recorrer, y supongo entonces que el while no lo tiene.

E

#93 es programación funcional. No te voy a liar ahora con esos conceptos xD ya más adelante cuando te sientas preparado, te sumerges en el maravilloso mundo de la recursividad xD

1 respuesta
B

#96 aprendí C++ en un fp hace 9 años, asique estoy un poco oxidado, gracias xDD

Deoxys

#88

contar=lambda x: sum([1 for i in x])
2
K0N1G

Practicando con Scrapy lo único que se me ocurrió fue hacer un script para sacar las imágenes de los threads de MV. Dejo el código de la araña por si a alguien le interesa. No descarga las imágenes directamente, si no que saca los links y luego ya si quieres los descargas por otra parte

from scrapy.spiders import Spider
from scrapy.http import FormRequest, Request
from scrapy.selector import Selector
import win32clipboard

def copy(text):
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardText(text, win32clipboard.CF_UNICODETEXT)
    win32clipboard.CloseClipboard()
    
class MySpider(Spider): name = "imagenes" allowed_domains = ["mediavida.com"] start_urls = ["http://www.mediavida.com/login"] #urls = ["http://www.mediavida.com/foro/feda/nsfw-culos-igual-tetas-nada-porno-536964/%d" % i for i in xrange(1,34)] urls = ["http://www.mediavida.com/foro/feda/nsfw-tetas-ahora-100-menos-pron-415795/%d" % i for i in xrange(400,504)] texto = ""
def parse(self, response): yield FormRequest.from_response(response, formnumber=1, formdata={'name':'USER', 'password':'PASS'}, callback=self.parse_urls) def parse_urls(self, response): for url in self.urls: yield Request(url, self.parse_links) def parse_links(self, response): print "URL: ",response hxs = Selector(response) links = hxs.xpath("//img[@class='lazy']/@src").extract() for link in links: self.texto = self.texto + link + "\n" #copy(self.texto) #descomentar si queremos que vaya al clipboard directamente with open('imagenes.txt', 'w') as f: f.write('{0}'.format(self.texto))
3
B

Pasito a paso se hace camino al andar xD

Ulquiorra

Buenas gente. Llevo un año en un sector que no pertenece a la programación (GIS, por si os suena) pero que cada vez tiene más cosas de programación y la estoy aprendiendo a matacaballo. El lenguaje que se usa en GIS es python. Cuando me toca hacer cosas de programación-GIS no tengo problema, es hacer con código lo que harías en el programa desktop, pero cuando es fuera del ámbito GIS... estoy perdidísimo.

Lo que necesito es una tontería:
Un script en pyhton que me cree una .mdb en access. Luego importar unos .txt a esa .mdb, de manera que los .txt pasen a ser distintas tablas de la .mdb.

He mirado por internet y me ha sorprendido no encontrar mucho. Lo más seguro es que no esté buscando bien. Como digo, vengo de un sector que nada tiene que ver con la programación y en páginas como github me pierdo. Si me podéis echar una mano para buscar algo o dar alguna noción sobre como sería el código que necesito os estaría muy agradecidos porque la verdad es que no he encontrado ni las librerías que me tendría que descargar.

Gracias de antebraso chicos. Por cierto, geniales los códigos que he ido viendo por el hilo. Hay auténticos máquinas por aquí. Saludos

EDIT: encontré que tengo que descargar la librería win32com y un código para crear la .mdb. Lo que sigo sin poder resolver es lo de importar los .txt a la .mdb.
El código para crearla, aunque luego lo he modificado para que no me cree ninguna tabla dentro de esta .mdb:
http://stackoverflow.com/questions/3627469/how-to-create-a-mdb-file-from-a-csv-file-in-python

1 respuesta
ciza

#101 ahora mismo no puedo ayudarte demasiado pero echale un ojo a la librería pyodbc, tengo entendido que con ella puedes acceder a bases de datos (e incluir tablas y datos en ellas)

Aqui te dejo un link a la documentación:

http://mkleehammer.github.io/pyodbc/

1 1 respuesta
Ulquiorra

#102 muchas gracias.

Cuando decía antes que me pierdo en páginas como github lo decía justo por ese link. Yo también había llegado ahí y la verdad es que no entiendo ni cómo instalarlo. Y mira que lo pone breve y preciso, pero es que no se que es eso de pip... ^'

Si cuando tengas tiempo te hace volver por aquí, me parece que yo aquí seguiré peleándome con ello

1 respuesta
HeXaN

#103 ¿Trabajas en Windows?

1 respuesta
Ulquiorra

#104 Sep

1 respuesta
HeXaN

#105 Menudo coñazo entonces. Si usas Python 3.4 o superior, pip viene instalado ya. Si no, tira de Google para bajarte el instalador.

1 respuesta
Ulquiorra

#106 uso el 2.7. Ok, buscaré el instalador de pyodbc.

Por lo demás, me sorprende no encontrar ningún resultado de algo tan simple como importar los txt a la base de datos. Busco "python txt to mdb" y "python txt to access" y nada, entre las dos menos de una página de resultados. Y estoy convencido de que tiene que ser algo muy sencillo. Igual que para crear la mdb llamaba a la función CreateDatabase, aquí habrá que llamar a la función Import. Lo que pasa que no tengo ni idea de qué parámetros pasarle.

1 respuesta
Kaiserlau

#107 no la puedes portar a csv?

1 respuesta
Ulquiorra

#108 no, no es separado por comas.

Ya he conseguido instalar pip. Me ha instalado pip.exe, pip2.7.exe (mi versión de python), easy_instal.exe, easy_install-2.7.exe y wheel.exe.

EDIT: Instalado por fin el pyodbc pero sigo sin encontrar como importar los .txt a la mdb.

1 respuesta
HeXaN

#109 ¿Podrías hacer un fichero .txt de ejemplo y subirlo? Por bichear un rato en esta mañana de sábado.

2 1 respuesta
Ulquiorra

#110 Claro! :D

Aquí están los txt que tengo que importar como tablas:
http://expirebox.com/download/bd2ee995355f2b8f1d67ac07e86f1327.html

Por cierto, investigando un poco creo que también sirve la librería win32, que es mucho más sencilla de conseguir que la pyodbc, pero bueno ya tengo las dos

1 respuesta
HeXaN

#111 Te he hecho una guarrería que convierte los .txt a .csv, que esos sí los puedes exportar a Access. He probado con el fichero "referencias_catastrales_provisionales_232.txt", así que tendrías que tunearlo para los demás, porque cada uno tiene un formato diferente.


# -*- coding: utf-8 -*-
import sys

file_name = sys.argv[1]
with open(file_name, 'r') as origin, open (file_name+'.csv', 'w') as destination:
    for line in origin:
        try:
            first, second = line.split()
        except ValueError:
            size = len(line)
            first = line[0:size - 26]
            second = line[26:-1]
        destination.write("{},{}\n".format(first, second))
1 2 respuestas
Ulquiorra

#112 Mil gracias Hexan!

Markitos_182

#112 si no recuerdo mal python tiene un módulo para leer y escribir csvs, por comentarlo

2 respuestas
HeXaN

#114 Por supuesto que lo tiene :3

B

#114 Que no tiene python? :D

Curso de CodeCademy acabado, si alguno tiene pensado hacerlo, que no dude ni un momento. :shutup:

Deoxys

Cuando tenga algo de tiempo quiero explorar un poco el procesamiento de imágenes. Quiero hacer un programa que coja un feed de vídeo, detecte marcas/anuncios/product placements y los quite del vídeo (Con hacerlo con un solo fotograma me vale, es para aprender más que nada). ¿Sabéis si se ha hecho algo así o si hay alguna cosa parecida que pueda mirar?

Sé que con redes neuronales se puede hacer pero tarda la de dios en procesar y estoy buscando algo un poco más directo.

1 respuesta
HeXaN

#117 Lo que pretendes es MUY complejo, como ya sabrás. Échale un ojo a este enlace: http://matthewearl.github.io/2016/05/06/cnn-anpr/ Aunque usa redes neuronales, cosa que no quieres xD

1 respuesta
Deoxys

#118 No es exactamente eso. Es más buscar y reemplazar que detectar todo sobre la marcha y modificarlo por el fondo.

Por ejemplo, reemplazar esto por un cuadrado amarillo en fotogramas como este.

Puede ser algo complicado pero no creo que sea algo superdifícil la verdad.

PD: Lo de detectar matrículas lo hacer con un 'detectar contornos' y un OCR en scikit-image :P

1 respuesta
B

#119

Este año he trabajado bastante con imagenes y videos y es relativamente sencillo de hacer, tienes que hacer una máscara de lo que quieres buscar e ir buscándolo en un frame determinado, es decir, la teoría es fácil, el procesamiento no tanto, en python quizás con openCV tengas alguna solución, pero no creo que sea muy ágil, yo lo hice a pelo y tuve que recurrir a C utilizando instrucciones SSE y threads.

Un saludo.

1 1 respuesta

Usuarios habituales