web-dev-qa-db-fra.com

json.decoder.JSONDecodeError: valeur attendue: ligne 1 colonne 1 (caractère 0)

J'essaie d'importer un fichier qui a été enregistré avec json.dumps et contient les coordonnées de Tweet:

{
    "type": "Point", 
    "coordinates": [
        -4.62352292, 
        55.44787441
    ]
}

Mon code est:

>>> import json
>>> data = json.loads('/Users/JoshuaHawley/clean1.txt')  

Mais chaque fois que j'obtiens l'erreur:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Je veux finir par extraire toutes les coordonnées et les enregistrer séparément dans un fichier différent afin qu'elles puissent ensuite être mappées, mais ce problème apparemment simple m'empêche de le faire. J'ai regardé les réponses à des erreurs similaires mais je ne semble pas pouvoir l'appliquer à cela. Toute aide serait appréciée car je suis relativement nouveau dans Python.

19
JTH

json.loads() prend un chaîne codée JSON, pas un nom de fichier. Vous voulez utiliser json.load() (no s) à la place et passer un objet de fichier ouvert:

with open('/Users/JoshuaHawley/clean1.txt') as jsonfile:
    data = json.load(jsonfile)

La commande open() produit un objet fichier que json.load() peut ensuite lire pour produire l'objet Python) décodé. Le with déclaration garantit que le fichier est fermé à nouveau lorsque vous avez terminé.

L'alternative consiste à lire les données vous-même, puis à les transmettre à json.loads().

26
Martijn Pieters

J'avais une erreur similaire: "valeur attendue: ligne 1 colonne 1 (caractère 0)"

Il m'a été utile d'ajouter "myfile.seek (0)", de déplacer le pointeur sur le caractère 0

with open(storage_path, 'r') as myfile:
if len(myfile.readlines()) != 0:
    myfile.seek(0)
    Bank_0 = json.load(myfile)
6
Sergey_M