Como parsear un dataset de Twitter en JSON y no morir en el intentoHow to parse a JSON Twitter dataset and and not die trying

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.

In June of 2013 my patience was tested when I lost some datasets due to a disk failure of a server at university. As misfortunes do not come alone, the back-up server at home crashed  at about the same time with no possibility of recovering this information. My reaction was not like Job´s (Twitter gave, and the disk has taken away; blessed be the name of   technology) because patience is not a virtue that I own. First I cried (a female advantage to let off steam) until my emotional side was calmed and then my rational part started to work finding a solution. One of the datasets lost was the Eurovision-2013. It  hurt me twice as much because it was a collaboration with a research team at the Complutense University. To enable this research, I asked  other researchers who had also collected data from Twitter of Eurovision and generously they sent me the dataset in the JSON format. It seemed something as trivial as to parse from the JSON to CSV format, but I spent a day doing it, because I found several «stones» along the way:


the JSON file size was huge and my laptop doesn´t have enough  memory to do it once, so there was only the option to do it tweet by tweet and fortunately they were delimited by a line break.
But tweets have more pitfalls than a  Chinese movie, inside the text of the tweets there is everything …..
Line breaks that split the tweet in JSON format
The letal ^ M of Microsoft that wrongs any parser
The symbol \ (backslash) that the parser gives errors if it isn’t a ‘unicode-scape’. Many users love to use it in a lot of ways \ o / \ m / \ @ / etc ..

After doing an exhaustive treatment of exceptions I got to convert JSON to CSV and now I can surprise  the research team at the Complutense University.

También te podría gustar...

Deja una respuesta

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