Sie haben mehrere Probleme so nah wie ich sagen kann. Erstens, ist die Dateicodierung. Wenn Sie eine Datei öffnen, ohne eine Kodierung anzugeben, wird die Datei mit allem geöffnet, was auch immer sys.getfilesystemencoding()
ist. Da dies variieren kann (besonders auf Windows-Rechnern) ist es eine gute Idee, für die meisten JSON-Dateien explizit encoding="utf-8"
zu verwenden. Aufgrund Ihrer Fehlermeldung vermute ich, dass die Datei mit einer ascii
Codierung geöffnet wurde.
Als nächstes wird die Datei von utf-8 in Python-Strings decodiert, wie sie vom Dateisystemobjekt gelesen werden. Die utf-8 Zeile wurde bereits zu einer Zeichenkette dekodiert und ist bereits bereit für json zu lesen. Wenn Sie line.encode('utf-8','replace')
tun, codieren Sie die Zeile wieder in ein bytes
Objekt, das die JSON loads
(das heißt, "Zeichenfolge laden") nicht verarbeiten kann.
Schließlich ist "tooltip":{ "navbar":"Operações de grupo"}
nicht gültig json, aber es sieht aus wie eine Zeile einer hübsch gedruckten JSON-Datei, die ein einzelnes JSON-Objekt enthält. Meine Vermutung ist, dass Sie die gesamte Datei als 1 Json-Objekt lesen sollten.
es Putting alles zusammen bekommen Sie:
import json
with open('/Users/myvb/Desktop/Automation/pt-PT.json', encoding="utf-8") as f:
data = json.load(f)
Von seinen Namen, seine möglich, dass diese Datei als Windows-Portugiesisch-Codepage codiert ist. Wenn dies der Fall ist, könnte die Codierung "cp860"
besser funktionieren.
'json.loads' als eine Argumentcodierung. Was ist der wirkliche Inhalt der Datei 'pt-PT.json'? Gibt es Zeilen mit gültigen JSON-Daten oder eine lange JSON-Datei? Im letzteren Fall wäre es besser, direkt als Datei, nicht zeilenweise zu laden. –
Die Zeichenfolge, die Sie als JSON-Dateiinhalt anzeigen, ist kein gültiger JSON, sondern nur ein Fragment eines größeren Objekts. –
Versuchte Laden als eine Datei auch, aber das gleiche Problem und Fehler wird angezeigt – min2bro