使用希伯来语解析json文件,使用python 3.5解析英语

时间:2015-12-06 23:10:31

标签: python json parsing hebrew

我的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}}

谢谢!!

3 个答案:

答案 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)