我通过ast.literal_eval()
将字符串转换为python字典。字符串包含布尔值,因此ast.literal_eval()
得到{
在google上,我发现我必须添加语句ast.literal_eval(json.dumps(json.loads(data)))
来处理boolen数据。在
但是,我还是犯了同样的错误。在
以下是代码片段:
#!/usr/bin/python
import sys
import os
import ast
import json
def main(argv):
data = argv[1]
print(argv[1])
crldix = ast.literal_eval(json.dumps(json.loads(data)))
for drive in crldix['files']:
print("|{}|{}|".format(drive['name'], drive['boolkey']))
return 0
if __name__ == "__main__":
retval = main(sys.argv)
exit(retval)
#eof
输出:
^{pr2}$
ast.literal_eval(json.dumps(json.loads(data)))
是多余的和多余的(看看我在这里做了什么?)在json.loads
已经返回了一个字典,因此不需要将其返回到字符串,然后返回到带有literal_eval
的dict。在由于
json.loads('{ "files": [ { "name": "filename", "boolkey": false } ] } ')
起作用,因此出现的任何问题都是由于终端将字符串传递给sys.argv
的方式造成的。在我不知道您使用的是什么操作系统/终端,但通常需要
"
来传递带空格的参数。这意味着您必须转义字符串中的另一个"
。在例如,在Windows上执行
按以下方式(注意用于转义的
^{pr2}$\
)工作,输出:
另一种方法,无需转义
"
:然后执行
同样有效。在
相关问题 更多 >
编程相关推荐