我的json文件,好吧,部分内容如下:
with open('israelCities.json') as data_file:
jsonData = json.loads(data_file.read().encode('utf8'))
print(jsonData)
等。
我的部分代码如下:
import json
import urllib.request
url='https://raw.githubusercontent.com/royts/israel-cities/master/israel-cities.json'
data = urllib.request.urlopen(url).read().decode('utf-8')
json.loads(data)
第二行失败(jsonData = ....), 我是python的新手,并没有看到任何类似的问题, 任何帮助将不胜感激
谢谢!
这两个对我来说很完美:
import json
import requests
r = requests.get('https://raw.githubusercontent.com/royts/israel-cities/master/israel-cities.json')
with open('israelCities.json', 'w') as f:
json.dump(r.json(), f)
with open('israelCities.json') as f:
json_data = json.load(f)
而这一个:
{{1}}
答案 0 :(得分:0)
这来自您的代码:json.loads(data_file.read().encode('utf8'))
尝试从文件中读取数据,然后将其转换为utf8。
请尝试改为:json.loads(data_file.read(), encoding='utf8')
,这意味着:读取此内容,写成utf8。
当然,该文件应保存为utf-8,否则无法正常工作。
修改强>
简化使用,正如@mhawke建议的那样,使用OP的原始文件,这有效:
>>> httpresponse = urllib.urlopen('https://raw.githubusercontent.com/royts/israel-cities/master/israel-cities.json')
>>> json.load(httpresponse)
编辑2:
如果您使用的是 Python 3 ,请尝试使用
>>> import json
>>> import urllib.request
>>> url='https://raw.githubusercontent.com/royts/israel-cities/master/israel-cities.json'
>>> data = urllib.request.urlopen(url).read().decode('utf-8')
>>> json.loads(data)
答案 1 :(得分:0)
您只需告诉loads
编码是什么,而不是尝试将其转换为编码。
所以,
import json
with open('israelCities.json') as data_file:
jsonData = json.loads(data_file.read(), encoding='utf-8')
print(jsonData)
将产生
[{u'engName':u'ABU GHOSH',你'':472,你'':你'\ u05d0 \ u05d1 \ u05d5 \ u05d2 \ u05d5 \ u05e9'},{u'engName' :u'ABU SINAN',u'id':473,你叫':'u'\ u05d0 \ u05d1 \ u05d5 \ u05e1 \ u05e0 \ u05d0 \ u05df'},{u'engName':u'ABU QUREINAT', u'id':1342,你'':你'u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u u / p>
但前提是您先在其编码中将 israelCities.json 保存为'utf-8'!
答案 2 :(得分:0)
您不需要在文件上调用read()
。请改用json.load()
:
import json
with open('israelCities.json') as data_file:
jsonData = json.load(data_file)
如果文件是UTF8编码的(并且git repo israel-cities中的文件是),则您不需要将编码指定为json.load()
。
<强>更新强>
从其他答案中的评论看来,您可能正在从github下载文件并保存。如果您复制了repo,那么该文件应该没有问题 - 它已经是UTF8编码的。如果您不确定可以使用requests
库下载文件并将其明确保存为json:
import json
import requests
r = requests.get('https://raw.githubusercontent.com/royts/israel-cities/master/israel-cities.json')
with open('israelCities.json', 'w') as f:
json.dump(r.json(), f)
现在你肯定应该有一个可以加载的文件:
with open('israelCities.json') as f:
json_data = json.load(f)