Como parsear un dataset de Twitter en JSON y no morir en el intento

En Junio de 2013 mi paciencia fue puesta a prueba cuando un fallo disco en un servidor de la universidad se llevó por delante parte de mis de mis preciados datos. Como las desgracias no vienen solas, el servidor de back-up que tenía en casa dejo de funcionar casi al  mismo tiempo sin posibilidad de recuperar la información perdida. Mi reacción no fue como la del santo Job (Twitter me los dio, el disco se los llevó, alabada sea la tecnología)  porque la paciencia no es virtud que me adorne. Primero me dio por llorar (ventaja que tenemos las mujeres para desahogarnos) hasta que una vez que agoté la parte emocional pasé a la racional para buscar una solución. Uno de los datasets perdidos fue el  de Eurovisión-2013 que me dolía doblemente porque era para una colaboración con un grupo de investigación de la Universidad Complutense. Para no dejar colgada esta investigación, recurrí a otros investigadores que también habían recogido los datos de Eurovisión y que generosamente me los enviaron en formato JSON. Lo que parecía algo tan trivial como “pasear” el JSON para dejarlo en formato CSV me ha tenido todo el día de cabeza. Me he ido encontrando con varias “piedrecitas” por el camino:

El tamaño del JSON era enorme y no pude parsearlo de una vez  en la memoria de mi portátil, por lo que solo quedaba la opción de hacerlo tweet a tweet ya que afortunadamente estaban delimitados por un salto de línea.
Pero los tweets tienen más trampas que una película de chinos, en el texto de los tweets hay de todo…..
Saltos de línea que hace que el tweet en JSON quede partido en dos
El dichoso ^M de Microsoft que no le gusta a ningún parser
El símbolo \ (barra-para-atrás) que le sienta fatal al parser si no es  un ‘unicode-scape’ y que a los usuarios les encanta usar en un montón de modalidades \o/  \m/ \@/etc..

Después de hacer un tratamiento exhaustivo de excepciones he conseguido convertir el JSON a CSV y podré dar una sorpresa al grupo de investigación de la complutense.

Si te ha gustado, ¡compártelo!Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.