使用python在json中搜索值

时间:2018-10-22 14:40:56

标签: python json

因此,我尝试使用python搜索json文件,并且完全卡住了。我可能为此感到衣衫agged,但是我无处可去。我是python新手,一直无法通过搜索找到所需的信息。...

这是我正在尝试做的事情: 我有一个常数,称为A1,与X1的长度相同,但值不同。我希望将我的常量除以每个后续的X1(位于json文件中)。当余数(模)大于2时,我希望打印X1值。基本上,我试图找到我的常数和每个X1的GCD,但是gcd通常仅为1。我只希望在模数大于1时打印。

这是我的json文件:

{
  “536723876acbdacbd3344”: {
    “X1”: "0x2345678abcdef1”,
    “X2”: "0x12345678abcde"
  },
  “7632948974879abcdabcd”: {
    “X1”: "0x1234678abcdef”,
    “X2”: "0x12345678abcde"
 },
  “23847298347233abcdabcd”: {
    “X1”: "0x1234678abcddd”,
    “X2”: "0x12345678abcde"
}
}

这是我到目前为止编写的代码:

import json

data = json.load(open("test1.json"))

def translate(w):
    A1 = int("0xffff123123", 16)
    if w in data.values:
        X1 = int("w", 16)
        if A1%X1 > 2:
            print("The modulo is", data.values[X1])
        else:
            print( "No match")

任何帮助都会很好。我很难通过搜索找到所需的信息。谢谢!

2 个答案:

答案 0 :(得分:1)

import json

data=json.load(open("file.json"))

for key in data:
    A1 = int("0xffff123123", 16)
    obj = data.get(key)
    x1 = obj.get('X1')
    x1 = int(x1, 16)
    if A1%x1 > 2:
        # print what you need
        print("Module greater than 2")
    else:
        print("No match")

我不知道它是否正是您所需要的,但是通过这种方式,在x1中,您具有每个JSON对象的字段X1的值。由您决定是否向程序(if语句中添加正确的逻辑。
注意:您粘贴的JSON字符与双引号不同({{1 }}。

答案 1 :(得分:1)

我会这样修改您的代码:

import json

A1 = int("0xffff123123", 16)

with open('test1.json') as f:
    data = json.load(f)
    for key in data:
        value = data.get(key)
        X1 = int(value.get("X1"), 16)
        if A1%X1 > 2:
            print("The modulo is greater then 2")
        else:
            print("No match")

请注意,这些步骤是:打开文件,加载JSON,循环执行任务的对象。

检查JSON字符串也很重要,因为其中某些双引号实际上并没有双引号,这肯定会影响您的运行