我正在使用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)
但我似乎无法超越上面打印的负载错误。任何帮助将不胜感激。
答案 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)