import re import codecs LIBRO = 'QUIJOTE' num_tweet = 1 PATRON = '(W)' LONGITUD_FRAGMENTO = 180 LONGITUD_TWEET = 140 CABECERA = '{libro} {num_tweet}. ' ## Cargo el texto. El original en ## http://www.gutenberg.org/files/2000/old/2donq10.txt ## He suprimido los encabezados, incluyendo el prólogo ## de Cervantes y los sonetos, para empezar por el ## emblemático 'En un lugar de La Mancha...' ---- fichero = codecs.open('quijote.txt', 'r', 'utf-8') quijote = fichero.read() fichero.close() ## En este algoritmo, el texto se va recortando por ## su principio según se va usando ---- while quijote: ## Se toman 180 caracteres, que sobren, para recortar ---- quijote_fragmento = quijote[:LONGITUD_FRAGMENTO] ## La cabecera es 'QUIJOTE 125. ', por ejemplo ---- cabecera = CABECERA.format(libro=LIBRO, num_tweet=num_tweet) longitud_cabecera = len(cabecera) ## Esto serán los caracteres disponibles para tuitear ---- longitud_disponible = LONGITUD_TWEET - longitud_cabecera ## Aquí troceamos por palabras. Si la plantilla incluye ## paréntesis en los grupos de captura, también se guardan ## los separadores. Ver documentación Python: ## https://docs.python.org/3.4/library/re.html ---- pedazos_fragmento = re.split(PATRON, quijote_fragmento) ## Tomamos los, digamos, 20 fragmentos, y vamos quitando ## del final (19, 18...), hasta que el número de caracteres ## que quedan encajan en el espacio disponible ---- for i in range(len(pedazos_fragmento), 0, -1): tweet_menguante = ''.join(pedazos_fragmento[:i]) if len(tweet_menguante) <= longitud_disponible: ## Cuando ya cabe, unimos cabecera y cuerpo y listo ---- tweet = cabecera + tweet_menguante num_tweet += 1 quijote = quijote.replace(tweet_menguante, '', 1) ## Ya podemos salir del bucle de trozos menguantes ---- break ## Aquí imprimimos el tuit, o lo guardamos en una base de datos ## para usarlos ya pretroceados más adelante ---- #print(tweet) if num_tweet % 100 == 0: print(num_tweet)
Categorías