import json
data1 = {'b': 789, 'c': 456, 'a': 123}
encode_line = json.dumps(data1)
decode_json = json.loads(encode_line)
print type(encode_line)
print type(decode_line)
类型(decode_line)是[dict],但是当我们将data1保存到txt文件中时,使用下面的脚本读取它:
file = open('test.txt','r')
for line in file:
encode_line = json.dumps(line)
decode_line = json.loads(encode_line)
print type(encode_line)
print type(decode_line)
现在,类型(decode_line)是[unicode]。为什么?
我想从txt文件中读取数据,然后从dict类型中检索信息。我该怎么办?
谢谢!
答案 0 :(得分:0)
你好!
这应该可以解决问题:
import json;
def readJSON(filename):
"Reads JSON file, returns correspoding dict.";
with open(filename) as f:
return json.loads(f.read());
工作原理:
json.dumps(.)
将Python dict转换为JSON字符串
json.loads(.)
将JSON字符串转换为Python dict。
在您的密码中,您拨打json.dumps(line)
,但line
是一个字符串!
要使json.dumps(.)
正常工作,您必须提供Python字典,而不是字符串。
在此上下文中,dumps
被读作“dump-s”,“s”表示字符串。它需要一个dict并转储(即返回)它的字符串表示。同样,loads
被读作“load-s”。它加载(即接受)一个JSON字符串并返回它的相应字典。
希望这会有所帮助。
答案 1 :(得分:0)
删除以下行
encode_line = json.dumps(line)
来自第二个片段(您正在从文件中读取)
file = open('test.txt','r')
for line in file:
decode_line = json.loads(line)
print type(line)
print type(decode_line)