我正在製作我們大都市區域的字典。結構是這樣的:編寫json文件時出現Python類型錯誤
{
"Abilene": {
"allCities": [
"Abilene"
],
"latitude": "30.1588129",
"longName": "Abilene, TX Metropolitan Statistical Area",
"longitude": "-85.6602058",
"primaryState": "TX",
"states": [
"TX"
]
},
我想寫這個字典文件中的Unicode編碼的JSON,所以我進口的Unicode文本和IO包:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import io
from os.path import exists
import json
import unicodedata
我在文字設置鍵和unicode字符串中的值。
metropolitans[primaryCity] = {'allCities':allCities, 'longName':longName, 'allStates':states, 'primaryState':states[0]}
metropolitans[primaryCity]['longitude'] = unicode(str(coordinates[primaryCity]['longitude']), encoding = 'utf-8')
然後,我想將大都會保存到unicode中的json文件中。
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)
而且,我得到這個錯誤:
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
這是爲什麼?我知道我可以用'wb'完成一個文件的寫入,但是我想用unicode編寫這個文件。
如果我使用轉儲(我可以寫這個文件)和write():
s = json.dumps(metropolitans, ensure_ascii=False, encoding='utf-8', indent=2, sort_keys=True)
results.write(s)
你能提供你所有的代碼嗎? –
我不認爲你需要在'with io.open(...)'中使用'encoding ='utf-8'。 – tiwo
數據如longName來自哪裏。它是unicode嗎? –