读取json文件以在python中搜索键值

时间:2015-06-30 01:37:30

标签: python json

我正在使用python 3.4.3并尝试从文件中读取以下结构

[ 
{"name": "Afghanistan", "code": "AF"}, 
{"name": "Ã…land Islands", "code": "AX"}, 
{"name": "Albania", "code": "AL"}
]

我的代码是以下

>>> import json
>>> data = open("c:/iq/data/country.json","r").read()
>>> test = json.load(data)

*Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    test = json.load(data)
  File "C:\Python34\lib\json\__init__.py", line 265, in load
    return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'*

然后我会使用像

这样的东西
 for key,value in test.items():
    print(key,value)

但我似乎无法超越上面打印的负载错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您遇到的问题是open().read()返回一个字符串,但json.load采用“类文件对象”(请参阅​​documentation。)如果您有该文件像这样的字符串,你想要json.loads

data = open("c:/iq/data/country.json","r").read()
test = json.loads(data)

但是既然你想从文件中读取,你可以使用json.load,你只需要给它一个文件而不是字符串:

with open("c:/iq/data/country.json") as data_file:
    data = json.load(data_file)

如果需要,可以使用pprint验证:

import json
from pprint import pprint

data_str = open("c:/iq/data/country.json", "r").read()
data = json.loads(data_str)
pprint(data)

with open("c:/iq/data/country.json") as data_file:
    data = json.load(data_file)
pprint(data)