我的字符串看起来像这样的字典:
{"h":"hello"}
我想按照指示here
将其转换为实际字典>>> import json
>>>
>>> s = "{'h':'hello'}"
>>> json.load(s)
然而,我收到了一个错误:
Traceback(最近一次调用最后一次):文件“”,第1行,in 文件 “/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/init.py” 第286行,载入中 返回加载(fp.read(),
AttributeError:'str'对象没有属性'read'
我的代码有什么问题,以及如何将字符串转换为实际字典?感谢。
答案 0 :(得分:7)
您想使用loads
代替load
:
json.loads(s)
loads
将load
作为可输入对象(主要是文件)时输入字符串
json也使用双引号引用'"'
s = '{"a": 1, "b": 2}'
这里有live example
答案 1 :(得分:2)
我更喜欢 // change your code like this
$post->tags()->sync($request->tags);
$post->categories()->sync($request->categories);
:
ast.literal_eval
请参阅this explanation,了解为何使用import ast
ast.literal_eval('{"h":"hello"}') # {'h': 'hello'}
代替ast.literal_eval
。
答案 2 :(得分:1)
>>> import ast
>>> s = "{'h':'hello'}"
>>> ast.literal_eval(s)
{'h': 'hello'}
答案 3 :(得分:0)
eval
函数允许您运行代码并使用结果。
它通常用于将字符串解释为代码。
string = '{"a": 1, "b": 2}'
dct = eval(string)
有关eval
的详情,请参阅the W3school explanatino on eval()
免责声明:如果您要为广泛的用户群构建网站,请告知您{fon Code injection risks of eval
before using it.