因此,我尝试使用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")
任何帮助都会很好。我很难通过搜索找到所需的信息。谢谢!
答案 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字符串也很重要,因为其中某些双引号实际上并没有双引号,这肯定会影响您的运行