1
votes

Comment lire un fichier texte à convertir en dictionnaire?

J'essaie de lire un fichier texte contenant des dictionnaires séparés par des virgules et de le convertir en une liste de dictionnaires.

Comment puis-je faire cela avec python?

J'ai essayé de lire en json fichier ou utilisez la méthode de fractionnement

{
    "id": "b1",
    "name": "Some Name" 
},
{
    "id": "b2",
    "name": "Another Name"
},
....

le résultat doit être:

[{"id": "b1", "name": "Some Name"}, {"id": "b2", "name": "Another Name"}, ....] p >


2 commentaires

Le problème principal est que votre fichier de données n'est pas dans un format JSON approprié. Vous devez apporter une modification à la source pour mettre la liste entre crochets [, ]


Double associé / possible: Comment pour ajouter un caractère à la fin d'un objet JSON


3 Réponses :


2
votes

Si votre fichier n'est pas trop volumineux, vous pouvez faire ce qui suit:

import json

with open('filename.txt', 'r') as file:
    result = json.loads('[' + file.read() + ']')


2 commentaires

Je ne pense pas que la mémoire devrait être trop un problème ici. Le module JSON intégré n'est déjà pas efficace en mémoire. Si la consommation de mémoire est un problème, OP devrait utiliser une autre bibliothèque / approche.


En guise de remarque secondaire, assurez-vous que votre structure de dict finale dans le fichier ne comporte pas de virgule de fin. Sinon, vous verrez quelque chose comme ValueError: aucun objet JSON n'a pu être décodé .



0
votes

Vous pouvez utiliser le module json en python

JSON (JavaScript Object Notation), spécifié par RFC 7159 (qui rend obsolète RFC 4627) et par ECMA-404, est un format d'échange de données léger inspiré par la syntaxe littérale d'objet JavaScript (bien que ce ne soit pas un sous-ensemble strict de JavaScript).

json expose une API familière aux utilisateurs des modules marshal et pickle de bibliothèque standard. https://docs.python.org/2/library/json.html

Dans votre cas si votre fichier est un fichier json valide alors vous pouvez utiliser la méthode json.loads () directement

import json

with open('test.txt', 'r') as file:
    result = json.loads(file.read())


1 commentaires

L'exemple de sa question n'est pas json valide. Et cela ne répond pas à son désir de créer une liste de dictés. Voir la réponse de @ Tomothy32.



0
votes

Bienvenue dans Stack Overflow ..!

Si vous utilisez un fichier JSON pour stocker des données, je vous recommande vivement la bibliothèque JSON Python . Comment l'utiliser, demandez-vous ..? Lisez ceci

Si vous prévoyez d'utiliser un fichier texte pour stocker des données, je vous recommande de stocker les données un peu différemment du format JSON

list = open("filename.txt").read().split("\n")
dictionaryList = []
for item in list:
    id, name = item.split(",")
    dictionaryList.append({id:name})

Cela permettrait de lire le fichier texte de manière plus facile . Utilisez simplement la commande split () pour séparer les lignes les unes des autres, puis utilisez split (",") sur chacune des lignes pour séparer l'ID du nom.

Voici le code:

b1,Some Name
b2,Another Name
.
.

J'espère que cela fonctionne ..! SDA


3 commentaires

Il n'y a aucune raison de "stocker les données un peu différemment du format JSON", JSON est tout à fait correct et très largement utilisé. (Cependant, les données d'OP ne sont pas du JSON valide.)


C'était s'il devait utiliser un fichier texte plutôt que JSON. Il a mentionné qu'il voulait une liste de dictionnaires et non un JSON comme sortie


JSON peut être une liste de dictionnaires.