Ich mache ein Wörterbuch von uns Metropolregionen. Struktur ist wie folgt:Python Typ Fehler beim Schreiben einer JSON-Datei
{
"Abilene": {
"allCities": [
"Abilene"
],
"latitude": "30.1588129",
"longName": "Abilene, TX Metropolitan Statistical Area",
"longitude": "-85.6602058",
"primaryState": "TX",
"states": [
"TX"
]
},
Ich möchte dieses Wörterbuch als json in eine Datei schreiben, in Unicode codiert, so dass ich importiert Unicode-Literale und die io-Paket:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import io
from os.path import exists
import json
import unicodedata
I Schlüssel in Literale bin Einstellung und Werte in Unicode-Strings.
metropolitans[primaryCity] = {'allCities':allCities, 'longName':longName, 'allStates':states, 'primaryState':states[0]}
metropolitans[primaryCity]['longitude'] = unicode(str(coordinates[primaryCity]['longitude']), encoding = 'utf-8')
Dann möchte ich Metropoliten zu einer JSON-Datei in Unicode speichern.
with io.open('results.json', 'w', encoding='utf-8') as results:
results.truncate()
json.dump(metropolitans, results, ensure_ascii=False, encoding='utf-8', results, indent=2, sort_keys=True)
Und bekomme ich diesen Fehler:
File "readMetropolitan.py", line 190, in <module>
json.dump(metropolitans, results, indent=2, sort_keys=True)
File "/usr/lib/python2.7/json/__init__.py", line 190, in dump
fp.write(chunk)
TypeError: write() argument 1 must be unicode, not str
Warum ist das so? Ich weiß, dass ich eine Datei mit 'wb' schreiben kann, aber ich möchte diese Datei in Unicode schreiben.
kann ich diese Datei schreiben, wenn ich Dumps() und write():
s = json.dumps(metropolitans, ensure_ascii=False, encoding='utf-8', indent=2, sort_keys=True)
results.write(s)
könnten Sie Ihren ganzen Code zur Verfügung stellen? –
Ich glaube nicht, dass Sie die 'encoding = 'utf-8'' im' with io.open (...) 'brauchen. – tiwo
Woher kommen die Daten wie 'longName' ?. Ist es Unicode? –