Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: 987123564 en 14 Agosto 2016, 21:59 pm



Título: Python - Código que crea un diccionario al llegar a cierto número
Publicado por: 987123564 en 14 Agosto 2016, 21:59 pm
Buenas, tengo un programa que analiza el nombre de episodios de pokémon y quiero que al llegar a un cierto episodio añada a un diccionario una clave con el número de la temporada y el valor con una lista de los episodios de esa temporada.
El formato de los episodios es así:

P0k3M0N.1x01.Es.avi.mp4

Tengo este código para que se hagan una idea:
Código
  1. import os
  2.  
  3. files = []
  4.  
  5. for file in os.listdir("."):
  6.    if "P0k3M0N" in file:
  7.        files.append(file)
  8.  
  9. with open('last.txt', 'r') as f:
  10.    print("Last one: " + f.readline())
  11.  
  12. with open('last2.txt', 'r') as f:
  13.    print("Last: " + f.readline())
  14.  
  15. episodes = []
  16.  
  17. for episode in range(len(files)):
  18.    x = episode.find("x")
  19.    episodes.append(episode[x - 1:x + 2])
  20.  
  21. index = episodes.find("2x01")
  22. serie = {}
Espero que me ayuden, gracias y un saludo.


Título: Re: Python - Código que crea un diccionario al llegar a cierto número
Publicado por: tincopasan en 14 Agosto 2016, 23:01 pm
Estaría bueno que uses el foro para solventar dudas no para que te hagan la tarea!
Citar
quiero que al llegar a un cierto episodio añada a un diccionario una clave con el número de la temporada y el valor con una lista de los episodios de esa temporada.

1)¿en qué parte del código está la comparación con el número de episodios ?
2)ya preguntaste de diccionarios, pues ¿dónde lo declaraste?
3)Hay varios métodos para agregar datos ¿cuál intentaste usar?
4)engel lex te mostró un método en otro de tus post , ni ese veo en tú código.

por lo tanto desarrolla el código que quieres y si no anda, pues bien, ahí los que saben seguro te ayudarán, aunque si tenés suerte alguien te hace lo que querés.


Título: Re: Python - Código que crea un diccionario al llegar a cierto número
Publicado por: Eleкtro en 15 Agosto 2016, 10:27 am
Puedes hacerlo de la siguiente manera:

Código
  1. # -*- coding: Windows-1252 -*-
  2.  
  3. import os, re, sys
  4.  
  5. episodes = {}
  6.  
  7. for file in os.listdir('.\\'):
  8.  match = re.match(r'(?P<filename>P0k3M0N\.(?P<season>(\d+))x(?P<chapter>\d+).+\.avi\.mp4)', file)
  9.  if match:
  10.    episodes.setdefault(match.group('season'), []).append(match.group('filename'))
  11.  
  12. for key, value in episodes.iteritems():
  13.  print key, value
  14.  
  15. sys.exit(0)

He utilizado expresiones regulares con agrupaciones nombradas para simplificar la tarea e intentar que te resulte más comprensible la obtención de esos valores del nombre.

Resultado de ejecución:
Código:
1 ['P0k3M0N.1x01.Es.avi.mp4', 'P0k3M0N.1x02.Es.avi.mp4']
2 ['P0k3M0N.2x01.Es.avi.mp4', 'P0k3M0N.2x02.Es.avi.mp4', 'P0k3M0N.2x03.Es.avi.mp4']

PD: No se si te has fijado en el detalle de que esos archivos de video que descargaste tienen doble extensión... deberías cojer un renombrador de archivos y así de paso arreglas ese formato tan feo lleno de puntos y números reemplazando vocales -.- (c0m0 0d10 qu3 h4g4n 3s0)

Saludos


Título: Re: Python - Código que crea un diccionario al llegar a cierto número
Publicado por: 987123564 en 15 Agosto 2016, 16:45 pm
@Elektro muchas gracias, se ve que sabes mucho de python ;)