我使用以下代码将输出作为json字符串输出。但我要求它作为JSON字典,没有前导和尾随引号。我怎么能这样做?
如果我取消注释line4
而不是原始输入,它似乎有效。
def main(args):
f = open(args[1], 'w')
inp = raw_input("Enter a Dict")
# inp = {"a":1,"b":2}
django.utils.simplejson.dumps(inp, f)
if __name__=="__main__":
import sys
main(sys.argv)
我收到的样本输出:
"{'a':1,'b':2}"
输出我想:
{'a':1,'b':2}
答案 0 :(得分:1)
raw_input()
返回一个字符串,这是一个完全不同于inp
的对象,它是一个Python字典。
如果您希望将raw_input
视为JSON,请先解析它:
inp = raw_input("Enter a Dict")
inp = django.utils.simplejson.loads(inp)
django.utils.simplejson.dump(inp, f)
或将其解析为Python文字表达式:
from ast import literal_eval
inp = raw_input("Enter a Dict")
inp = literal_eval(inp)
django.utils.simplejson.dump(inp, f)
答案 1 :(得分:0)
您正在将用户的输入转换为字符串。它不是字典;它是一个以{
开头并以}
结尾的字符串。
在将其转换为json之前,您需要首先将其解析/评估为字典。
>>> inp = "{'a': 1, 'b': 2}"
>>> json.dumps(inp)
'"{\'a\': 1, \'b\': 2}"'
>>> import ast
>>> d = ast.literal_eval(inp)
>>> json.dumps(d)
'{"a": 1, "b": 2}'
答案 2 :(得分:0)
输入=“{'a':1,'b':2}”
import ast
ast.literal_eval(Input)
OR
eval(Input)
它适用于你...... :)
输出 - :{'a':1,'b':2}