python3.5用希伯来语和英语解析json文件

2024-10-06 12:15:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我的json文件,嗯,它的一部分看起来像:

[
  {
    "id": 472,
    "name": "אבו גוש",
    "engName": "ABU GHOSH"
  },
  {
    "id": 473,
    "name": "אבו סנאן",
"engName": "ABU SINAN"
  },
  {
     "id": 1342,
    "name": "אבו קורינאת (יישוב)",
    "engName": "ABU QUREINAT"
  },
]

等等。。在

我的代码部分看起来像:

^{pr2}$

它在第二行失败(jsonData=, 我是python新手,没有看到类似的问题, 任何帮助都将不胜感激

谢谢!!在

编辑

这两个对我来说非常适合:

 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)

还有这个:

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)

谢谢你!!在


Tags: namehttpsimportidjsonurldataraw
3条回答

您不需要对该文件调用read()。使用json.load()代替:

import json

with open('israelCities.json') as data_file:
    jsonData = json.load(data_file)

如果文件是UTF8编码的(git repo israel-cities中的文件是UTF8编码的),则不需要将编码指定为json.load()。在


更新

从其他答案中的注释来看,您可能正在从github下载并保存该文件。如果你克隆了一个repo,你应该对这个文件没有问题-它已经是UTF8编码的。如果您不确定是否可以使用^{}库下载该文件并将其显式保存为json:

^{pr2}$

你现在肯定可以加载一个文件:

with open('israelCities.json') as f:
    json_data = json.load(f)

您只需要告诉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', u'id': 472, u'name': u'\u05d0\u05d1\u05d5 \u05d2\u05d5\u05e9'}, {u'engName': u'ABU SINAN', u'id': 473, u'name': u'\u05d0\u05d1\u05d5 \u05e1\u05e0\u05d0\u05df'}, {u'engName': u'ABU QUREINAT', u'id': 1342, u'name': u'\u05d0\u05d1\u05d5 \u05e7\u05d5\u05e8\u05d9\u05e0\u05d0\u05ea (\u05d9\u05d9\u05e9\u05d5\u05d1)'}]

但前提是你救了以色列城市.json在编码时先将其命名为“utf-8”!在

这来自您的代码: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,请尝试以下方法:

^{pr2}$

相关问题 更多 >