用于从json数据获取值的python代码

时间:2014-04-02 06:54:39

标签: python json

尝试提取在python中传递的命令行参数

cmdargs = str(sys.argv)
print cmdargs

打印

['E:/omation.py', '{"command":"sel_media","value":"5X7_phot
o_paper.png"},{"command":"tray","value":"4X6_photo_paper.png"}']

从中我如何提取commandvalues。 我不知道如何循环这个数组并获得commnd和value values.plese help 注意:我还想丢弃第一个值'E:/omation.py'

3 个答案:

答案 0 :(得分:1)

您可以使用Python utils来解析json字符串:

import json
examples = json.loads('['+cmdargs[1]+']')

第一个导入为python加载json实用程序。然后,您可以使用json.loads将json字符串解析为Python字典。在示例中,我将您的一个json字符串解析为python字典。请务必添加' ['和']'将您的字符串转换为有效的json数组。然后,您可以获得命令和值,如:

print(examples[0]['command'])
print(examples[0]['value' ])

答案 1 :(得分:1)

您的输入无效JSON。您必须找到一种方法将参数作为单独的有效JSON对象传递。然后你可以这样做:

# j.py
import json
import sys

print(sys.argv)
for arg in sys.argv[1:]:
    j = json.loads(arg)
    print(j.get("command"))
    print(j.get("value"))

用法可能是:

$ python3 j.py '{"command":"sel_media","value":"5X7_photo_paper.png"}' '{"command":"tray","value":"4X6_photo_paper.png"}'
['j.py', '{"command":"sel_media","value":"5X7_photo_paper.png"}', '{"command":"tray","value":"4X6_photo_paper.png"}']
sel_media
5X7_photo_paper.png
tray
4X6_photo_paper.png

答案 2 :(得分:1)

您给出的示例在列表cmdargs的第二个元素中显示了两个json对象。捕获该案例的最简单方法可能是将第二个参数括在方括号中,这将使其成为合法的JSON,然后遍历结果列表:

import json
a = json.loads('['+cmdargs[1]+']')

for p in a:
    print "command is ", p['command']
    print "value is ", p['value']

这是针对您展示的示例所特有的,您可能需要使其更加健壮。