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:
import os
files = []
for file in os.listdir("."):
if "P0k3M0N" in file:
files.append(file)
with open('last.txt', 'r') as f:
print("Last one: " + f.readline())
with open('last2.txt', 'r') as f:
print("Last: " + f.readline())
episodes = []
for episode in range(len(files)):
x = episode.find("x")
episodes.append(episode[x - 1:x + 2])
index = episodes.find("2x01")
serie = {}
Espero que me ayuden, gracias y un saludo.
Estaría bueno que uses el foro para solventar dudas no para que te hagan la tarea!
Citarquiero 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.
Puedes hacerlo de la siguiente manera:
# -*- coding: Windows-1252 -*-
import os, re, sys
episodes = {}
for file in os.listdir('.\\'):
match = re.match(r'(?P<filename>P0k3M0N\.(?P<season>(\d+))x(?P<chapter>\d+).+\.avi\.mp4)', file)
if match:
episodes.setdefault(match.group('season'), []).append(match.group('filename'))
for key, value in episodes.iteritems():
print key, value
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:
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
@Elektro muchas gracias, se ve que sabes mucho de python ;)