我正在尝试使用 Python 加载一些地理数据simplejson
。
<!-- language: lang-py -->
string = file("prCounties.txt","r").read().decode('utf-8')
d = simplejson.loads(string)
文本文件有一个波浪号,这个词应该是Añasco而不是u"A\xf1asco"
SimpleJson 不解析的词。来源是来自github的geoJson文件
{"type": "FeatureCollection", "properties": {"kind": "state", "state": "PR"}, "features": [[{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-67.122, 18.3239], [-67.0508, 18.3075], [-67.0398, 18.291], [-67.0837, 18.2527], [-67.122, 18.2417], [-67.1603, 18.2746], [-67.1877, 18.2691], [-67.2261, 18.2965], [-67.1822, 18.3129], [-67.1275, 18.3184]]]]}, "type": "Feature", "properties": {"kind": "county", "name": u"A\xf1asco", "state": "PR"}}]]}
Python给了我错误simplejson.decoder.JSONDecodeError: Expecting object
我用来从 GitHub 加载的脚本来生成prCounties.txt
. 该变量counties
是与相关 GEOjson 数据的位置相关的字符串列表。
很明显,这不是保存这些数据的正确方法:
<!-- language: lang-py -->
countyGeo = [ ]
for x in counties:
d = simplejson.loads(urllib.urlopen("https://raw.github.com/johan/world.geo.json/master/countries/USA/PR/%s" % (x)).read())
countyGeo += [ d["features"][0]]
d["features"][0]=countyGeo
file("prCounties.txt", "w").write(str(d))
编辑:在最后一行,我str
用simplejson.dumps
. 我猜它现在可以正确编码。文件(“prCounties.txt”,“w”).write(simplejson.dumps(d))