[Python] Hilo general

Merkury

#480 Como que no? Eso es porque no habras configurado el interprete en los settings.

1 respuesta
eondev

#481

Y tienes que cambiar el intérprete por defecto y demás pequeñas tonterías, pycharm autodetecta todo, te deja tener varias instancias con varios proyectos distintos unos con pipenv otros con venc anaconda o el que te de la gana, el IntelliJ usa el mismo tipo para todos y has de ir a mano añadiéndoselo y cambiando el de otros.

Por ejemplo con el Android Studio te vienen configuraciones por defecto y algunas opciones que tampoco están en el IntelliJ con el módulo de Android.

1 respuesta
Merkury
#482eondev:

el IntelliJ usa el mismo tipo para todos

No.

Tengo yo proyectos de PHP, Python y Bash todos configurados por proyecto, porque todos esos settings se guardan en el .idea del proyecto.

1 respuesta
eondev

#483 Pues a mí me aplica la configuración de un proyecto en otros del mismo tipo xDDDD. Encima no tiene las mismas opciones tampoco. (encims viene con themes adicionales :P)

2 meses después
Saphyel

Pues ya tenemos resultados patitos https://discuss.python.org/t/python-governance-vote-december-2018-results/546

8 días después
HeXaN

Inside python dict — an explorable explanation.

https://just-taking-a-ride.com/inside_python_dict/chapter1.html

Muy chulo gracias a las animaciones interactivas paso a paso.

2 1 respuesta
n40k1

#486 Esta muy chulo. Gracias.

9 días después
HeXaN

Respondiendo a la pregunta de @DrLyra :

#29291DrLyra:

Estoy pensando en hacer una app web utilizando Python que lea datos de una bd en tiempo real y haga los plots, también en tiempo real.
La BD es postgres y pensaba utilizar Django para la app web y matplotlib para las gráficas, no obstante no tengo muy seguro si funcionara bien el matplotlib para hacer plots en realtime ni si se integrará bien con django, ni como leer datos en tiempo real con este último.

¿Alguna idea y/o recomendaciones de librerias etc...?

Un saludo!

Si no quieres usar algo tan tocho como Django puedes tirar a por Flask + PonyORM + Plotly.

1 1 respuesta
9 días después
eg000

Buenas tardes!

Estoy haciendo un máster relacionado con Big Data y en la asignatura de Programación I estamos con Python (todos somos novatos en mi clase en lo que a programación se refiere). La cuestión es que tengo una relación de ejercicios y no tengo ni idea de cómo plantear estos 2:

"Diseñe un programa que concatene los contenidos de los ficheros contenidos en una carpeta y los escriba en otro fichero. Los nombres de los ficheros y la carpeta se pediran al usuario por teclado."

"Escriba un programa que lea los DNI contenidos en un fichero y escriba los NIF correspondientes en otro fichero. Puede haber mas de un DNI por linea. Consideraremos que un numero es un DNI correcto si es positivo y tiene 8 digitos. Los nombres de los dos ficheros se introduciran por teclado."

Alguna orientación? :sweat_smile:

2 respuestas
HeXaN
#489eg000:

Alguna orientación?

Buscar en Google lo que no sepas hacer de esos dos ejercicios porque salen al toque. Entrada por consola, manejo de ficheros... Son cosas básicas que tienes miles de páginas con tutoriales o directamente la documentación oficial.

1 1 respuesta
Lolerpopler

#489 stack overflow e intentar desgranar el problema en diferentes pasos sencillos
No quiero sonar borde con esto, pero esta es la clase de pregunta que se hace a tus compañeros o profesor. SI vas a un foro de programadoras y pegas el enunciado muchas veces te encontraras con respuestas bordes y votaciones negativas.
Ahora si pro ejemplo tienes una duda tipo "Trabajando con python tengo unos problemas de mutabilidad que no acbo de entender, alguien tiene alguna lectura/libro recomendada para el tema" pues bienvenido seas

2 1 respuesta
eg000

#491 Tienes razón y soy el primero que sabe que no puedo ir pidiendo por ahi que me resuelvan el ejercicio. El problema viene cuando la teoría es limitada, las cosas que veo en stack overflow y demás no terminan de asemejarse a lo que me pide el ejercicio.

De todas formas gracias por vuestra ayuda #490 #491

1 respuesta
HeXaN
#492eg000:

las cosas que veo en stack overflow y demás no terminan de asemejarse a lo que me pide el ejercicio.

Es que no se trata de que te den el ejercicio resuelto. Se trata de que pienses y unas las diferentes partes en la que se descompone el problema. Por ejemplo, en el caso del primero:

  1. Leer datos de teclado
  2. Leer ficheros
  3. Listar contenido de una carpeta
  4. Concatenar strings
  5. Crear ficheros

Sobre estos cinco puntos hay decenas de miles de información. Una vez sepas hacer cada uno de ellos por separado los unes y listo. Bienvenido a la programación.

1
HeXaN

Un poco de contenido de calidad.

1
14 días después
HeXaN

Otra cosilla por aquí:

Clean Architectures in Python. A practical approach to better software design.

http://leanpub.com/clean-architectures-in-python

1
Wei-Yu

Sólo mirando el table of contents es flojo de narices.

Carnaza de humble bundle y sus learn machine learning with python.

1 respuesta
HeXaN

#496 Por eso es gratuito jajaja.

Saphyel

Yo tengo disponible el curso que le doy a mis chicas de python, pero es muy de introducción

B

#488 A raiz de esto me puse a investigar sobre Plotly y de casualidad me encontré con Dash, un framework montado sobre Flask y Plotly para construir aplicaciones en Python orientadas al análisis de datos y tengo que decir que increible. No parece ser muy escalable por si sola (tengo que investigar todavia sobre como seria para incrustarla en Flask o Django) pero para hacer aplicaciones web pequeñitas con graficos interactivos es fetén, muy sencilla de utilizar y un resultado bastante profesional.

¡Gracias!

13 días después
eg000

Cómo puedo obtener, mediante scraping, la información contenida en un directorio web de empresas? Es decir, en mi caso, necesito obtener 171 páginas de empresas y de cada una obtener la información básica (teléfono, dirección...). De momento solo he conseguido sacar el nombre de las empresas de la primera página :persevere:

3 respuestas
eondev

#500 pues ahora haces lo mismo con el resto de enlaces a las otras páginas

Fyn4r

#500 expresiones regulares, seguir enlaces y buscar secciones tipo "contacto", "about" o cosas parecidas.

1 respuesta
Zeroner

#502 expresiones regulares para parsear html, jamás

1 respuesta
eondev

#503 son un dolor de huevos innecesario, y más si estás escarbando distintos layouts xD

HeXaN

#500 Puedes usar requests + beautifulsoup4 y hacerlo en un pollazo.

1 respuesta
eg000

#505 en ello ando...a ver si consigo resultados jajaja

eg000

Vuelvo a postear para dar más por culo :rofl: Sigo liado con el tema del scraping, pero algo más encaminado. La cosa es que he creado un archivo "url.txt" con el enlace a 15 paginas de las 171 que tengo que leer simplemente para hacer pruebas y demás. El problema lo tengo con el comando "find_all" y es que cada vez que lanzo el código, me sale el siguiente error: 'NoneType' object has no attribute 'find_all'. Lo curioso del error es que me sale cada vez en puntos diferentes, es decir, lo mismo me da los resultados de 100 empresas y me salta el error, que vuelvo a lanzar, me da 4 y me salta el error de nuevo, vuelvo a lanzar y me salta directamente el error... Y no entiendo por qué es tan aleatorio en vez de darme el aviso en el mismo punto. Os copio el código de lo que llevo (seguramente no sea la forma óptima de hacerlo, pero es como lo he venido desarrollando. Tened en cuenta que no soy programador y que estoy aprendiendo :man_shrugging:)

with open('urls.txt') as inf:
    items= []
    urls = (line.strip() for line in inf)
    for url in urls:
        site = urlopen(url)
        soup = BeautifulSoup(site, "html.parser")
        marcas = soup.find('tbody').find_all('a', href=True)
        for item in marcas:
            #print item.text
            items.append(item.text)
            print items

with open('urls.txt') as inf:
    col_provincias= []
    urls = (line.strip() for line in inf)
    for url in urls:
        site = urlopen(url)
        soup = BeautifulSoup(site, "html.parser")
        provincias = soup.find('tbody').find_all('td', class_='mobile-hidden')
        for provincia in provincias:
            col_provincias.append(provincia.text)
            print col_provincias

with open('urls.txt') as inf:
    links = []
    urls = (line.strip() for line in inf)
    for url in urls:
        site = urlopen(url)
        soup = BeautifulSoup(site, "html.parser")
        web_empresa = soup.find('tbody').find_all('a')
        for link in web_empresa:
            A = link.get('href')
            #print A
            links.append(A)
            print links

url_base = 'https://guiaempresas.universia.es'

dir_empresa = []
for link in links:
    url_empresa = url_base + str(link)
    web = urlopen(url_empresa)
    soup4 = BeautifulSoup(web, 'html.parser')
    direccion = soup4.find('tbody').find_all('span', class_='street-address')
    for address in direccion:
        dir_empresa.append(address.text)
        print dir_empresa

Están puestos en bloques separados porque mi intención era ir haciendo pruebas para ver qué salía, una vez esté todo revisado, lo pondre todo dentro del mismo bloque

2 respuestas
eondev

#507 no todas las páginas tienen tbody? En un mismo loop, para un mismo enlace, unas veces te da el error y otras no?
Imprimete cada enlace que vas a escrapear y ve metiendo trazas de prints para ver en todo momento que está pasando.
Cuando sacas de un objeto una etiqueta que no existe te devuelve un tipo none.
Otra cosa puede ser que no descargue la web de la url, no al menos la que quieres.

2 respuestas
eg000

#508 Creo que es posible que me haya columpiado en el último caso (el de dir_empresa) por ir demasiado deprisa y posiblemente tenga que revisarlo. En el caso de los otros 3 bloques, la información la extraigo prácticamente de la misma parte del código HTML, puesto que es el nombre de la empresa (items), columna de provincias (col_provincias) y el enlace a la página individual de cada empresa (dir_empresa).

Kaiserlau
#507eg000:

El problema lo tengo con el comando "find_all" y es que cada vez que lanzo el código, me sale el siguiente error: 'NoneType' object has no attribute 'find_all'.

Eso es un error bastante comun. Tienes que ir mirando que resultados vas teniendo e ir ignorando todo lo que no te interese. Pasate por la docu de BS. De todas maneras dejo por aqui un ejemplillo sobre la diferencia entre un elemento tag y un resulset (que no es mas que una lista de resultados del find_all).

Moverse entre atributos del html es coser y cantar con BeautifulSoup

1 respuesta

Usuarios habituales