J'ai des données de CSV simples qui viennent de vivre à partir de Google Feuilles et que je souhaite le formater comme JSON en utilisant Python afin que je puisse le poster à une API.
y a-t-il un moyen de le faire sans importer Zapier ne prend pas en charge l'importation d'une autre chose que Exemple de données CSV: P> CSV code>? p>
Demandes code>. p>
File "<string>", line 11, in the_function
NameError: name 'data' is not defined
3 Réponses :
L'erreur est que data.csv n'est pas un nom de variable valide, vous ne pouvez pas avoir '.' ' là-bas.
Je ne sais pas à quel point Zapier fonctionne, mais si vous essayez de lire les données d'un fichier appelé 'data.csv' et si vous souhaitez une sortie dans le format suivant P>
Essayez p> xxx pré> si vous essayez d'analyser le test de la variable "INPUT_DATA" (à laquelle on ressemble à l'essai de le faire), essayez. P> [{"Nom": "rangée", "id": 1, "prix": 100, "Qté": 1}, ... code> p>
input = input_data['data'].split("\n")
s = "["
for k in input[1:]: # For every line except for the header
s += '{{"Name": "{}", "ID": {}, "Price": {}, "Qty": {}}}, '.format(*k.split(","))
s += "]"
Je vois que c'est intéressant, mais où est-ce que cela reçoit les données? J'ai partagé un scénario ci-dessus.
Selon le Documentation Zapier :
Seule la bibliothèque python standard et les demandes sont disponibles. P> blockQquote>
donc
import csv code> et
import json code> serait autorisé car ce sont des bibliothèques standard Python. P>
Il dépend alors de quoi format que vous souhaitez que le format de sortie JSON soit. Une conversion très simple et directe consisterait à utiliser le standard python
csv code> et
json code> comme suit: p>
xxx pré> donnant Vous un fichier JSON de sortie comme suit: p>
xxx pré> p>
David ici, de l'équipe de la plate-forme Zapier.
Comme d'autres personnes ont mentionné, Pour donner un certain contexte, votre code Python est configuré comme: p> pour analyser que votre code devrait être quelque chose comme: p> qui devrait vous laisser transformer les données en une forme que vous souhaitez! p> Vous avez mentionné vouloir envoyer les données à une API - Vous pouvez le faire dans ce domaine. pas de code aussi. Voir Exemples HTTP . P> P> data.csv = ... code> n'est pas valide python, d'où votre erreur. p>
Cool! Si cette réponse résolvait votre problème, assurez-vous de la remettre et de la marquer comme correctes ( info ).
faire une chaîne Remplacement de
ligne code> avec
[ code> et une chaîne Remplacement de
\ n code> avec
], code> puis jetez-le Il se trouve à l'intérieur d'un autre ensemble de
[] code>? Peut-être utile de spécifier la manière dont vous souhaitez que le JSON sortit ressemble à une liste des listes
Je ne sais pas que cela fonctionnerait avec un nombre variable de lignes, je pense qu'il a besoin de boucler et de formater.
Bien sûr, il est détaillé ici: zapier.com/apps/code/ Aide # nécessitant - ou à utiliser-l'utiliser-externe-libreau
Je ne sais pas comment avoir plus de lignes ou moins de rangées ferait mon commentaire ne fonctionnerait pas
Vient de voir la question mise à jour - je vous recommanderais de mettre un format attendu de votre sortie JSON
Qu'est-ce que vous voulez dire...? Excusez mon inconnu avec Python, je ne suis pas un développeur, d'où utilise Zapier.
Selon leur Documentation -
seulement La bibliothèque et les demandes Standard Python sont disponibles Code>. Donc,
importer csv code> doit être autorisé car il s'agit d'une bibliothèque python standard.
Que voulez-vous le .json que vous ayez à ressembler? Voulez-vous
[[1,123.100,1], [2,123,56,2], ... code> ou quelque chose d'autre comme
[{"Nom": "rangée", "id": 1 , "Prix": 100, "Qté": 1}, ... code> ou autre chose?
Avez-vous entendu parler de
csvkit code>? Il possède un programme
CSVJSON CODE> décrit ici
CSV est un format de texte délimité très simple, vous devriez donc pouvoir lire et convertir Dans l'objet JSON (équivalent à un dictionnaire python) au format avec peu de difficulté.
@Quinn je dirais plus comme ce dernier
@Martinvans intéressants, j'ai l'impression d'aller quelque part, mais je ne peux pas sembler le faire fonctionner. Je pourrais poster une mise à jour.