J'utilise tweepy's Streamlistener
pour collecter des données Twitter et le code que j'utilise génère un fichier JSONL avec un tas de métadonnées. Maintenant, je voudrais convertir le fichier dans un fichier CSV pour lequel j'ai trouvé un code pour cela. Malheureusement, j'ai couru dans la lecture d'erreur:Conversion de fichier JSONL en CSV - "JSONDecodeError: données supplémentaires"
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 7833)
J'ai lu dans d'autres discussions et je pense qu'il a quelque chose à voir avec json.loads
ne pas être en mesure de traiter plusieurs parties de données dans le fichier JSON (ce qui est bien sûr le cas de mon fichier de liste json). Comment puis-je contourner ce problème dans le code? Ou dois-je utiliser une approche complètement différente pour convertir le fichier? (J'utilise python 3.6, et les tweets que je diffuse sont principalement en arabe).
__author__ = 'seandolinar'
import json
import csv
import io
'''
creates a .csv file using a Twitter .json file
the fields have to be set manually
'''
data_json = io.open('stream_____.jsonl', mode='r', encoding='utf-8').read() #reads in the JSON file
data_python = json.loads(data_json)
csv_out = io.open('tweets_out_utf8.csv', mode='w', encoding='utf-8') #opens csv file
fields = u'created_at,text,screen_name,followers,friends,rt,fav' #field names
csv_out.write(fields)
csv_out.write(u'\n')
for line in data_python:
#writes a row and gets the fields from the json object
#screen_name and followers/friends are found on the second level hence two get methods
row = [line.get('created_at'),
'"' + line.get('text').replace('"','""') + '"', #creates double quotes
line.get('user').get('screen_name'),
unicode(line.get('user').get('followers_count')),
unicode(line.get('user').get('friends_count')),
unicode(line.get('retweet_count')),
unicode(line.get('favorite_count'))]
row_joined = u','.join(row)
csv_out.write(row_joined)
csv_out.write(u'\n')
csv_out.close()
Je comprends votre contenu de réponse sage, mais techniquement comment puis-je configurer les données? Dois-je changer les lettres ou les chiffres en fonction de mes données? Aussi puis-je simplement inclure les deux premiers blogs de votre code suggéré en tant que premières lignes dans mon code? J'espère que ce ne sont pas des questions très naïves (débutant). Merci encore! (Au moment de l'exécuter, j'ai rencontré un message d'erreur de syntaxe pour) –
@JosephinaK. J'ai modifié la réponse pour supprimer l'exemple d'utilisation prêtant à confusion et ajouter une version complète de votre code. – snakecharmerb
Ca marche !!! Merci beaucoup. J'ai dû faire de petits changements au code original (changer unicode en str et ajouter utf-8-sig pour excel) mais maintenant ça marche bien :) Une dernière chose: lors de l'ouverture du fichier, le lecteur semble confondre les textes qui incluent "=" et les sépare dans une colonne séparée, ce qui chamboule tout l'ordre. Une idée de comment surmonter cela? –