Last active
November 10, 2018 13:47
-
-
Save ettorerizza/20e02df929551717d4f34effd5e49a61 to your computer and use it in GitHub Desktop.
Tropy JsonLD to CSV
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import json | |
import csv | |
import sys | |
# parseur Python pour les fichiers jsonLD de Tropy | |
# Renvoie le fichier avec son nom d'origine, mais en CSV. | |
# à utiliser en lignes de commande. | |
# exemple d'usage avec un fichier Json de Tropy nommé resultats.json : | |
#> python tropy_parser.py resultats.json | |
def flatten_json(y): | |
out = {} | |
def flatten(x, name=''): | |
if type(x) is dict: | |
for a in x: | |
if a != "tag": | |
flatten(x[a], name + a + '_') | |
else: | |
out[a] = ",".join(x[a]) | |
elif type(x) is list: | |
for a in x: | |
if a != "tag": | |
flatten(a, name) | |
else: | |
out[a] = ",".join(x[a]) | |
else: | |
out[name[:-1]] = x | |
flatten(y) | |
return out | |
if __name__ == '__main__': | |
filename = sys.argv[1] | |
with open(filename, "r", encoding="utf8") as f: | |
data = json.load(f) | |
result = [] | |
for el in data: | |
result.append(flatten_json(el['@graph'])) | |
all_fields = [] | |
for x in result: | |
for y in x.keys(): | |
all_fields.append(y) | |
if "\\" in filename: | |
outputfile = filename.split("\\")[-1].split(".")[-2] + ".csv" | |
else: | |
outputfile = filename.split(".")[-2] + ".csv" | |
with open(outputfile, "w") as output_file: | |
writer = csv.DictWriter(output_file, all_fields) | |
writer.writeheader() | |
writer.writerows(result) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Autre solution : les projets Tropy sont stockés sous la forme de fichiers *.tpy, qui est en réalité une base de données SQLite. En effectuant un clic droit sur le nom d'un projet dans Tropy, on peut retrouver l'endroit où ce fichier est stocké (dans Windows, par défaut, il est enregistré dans le dossier "Documents"). Il "suffit" alors d'ouvrir le fichier *.tpy avec un logiciel tel que DBbrowser for SQLite et d'effectuer une requête SQL sur les tables qui nous intéressent. L'écriture de la requête sera plus complexe que l'utilisation de ce script Python, mais elle permettra d'obtenir des informations plus fines et reservira souvent.