Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python打印错误_Python_Json - Fatal编程技术网

python打印错误

python打印错误,python,json,Python,Json,sample.json { "datalist": [{ "element1": "content", "element2": "content", "element3": "content" }, { "element1": "content", "element2": "content", "element3": "content" }, { "element1":

sample.json

{
"datalist": [{
        "element1": "content",
        "element2": "content",
        "element3": "content"
    }, {
        "element1": "content",
        "element2": "content",
        "element3": "content"
    }, {
        "element1": "content",
        "element2": "content",
        "element3": "content"
    }

  ]
}
{
"datalist": [{
        "element1": "content",
        "element2": "content",
        "element3": "content"
    }, {
        "element1": "content",
        "element3": "content"
    }, {
        "element1": "content",
        "element2": "content",
        "element3": "content"
    }

  ]
}
Python代码

import json

file = "/home/sample.json"

with open(file) as f:
  data = json.load(f)

for elem in data["datalist"]:
  print(elem["element1"] + ' \\ ' + elem["element2"] + ' \\ ' + elem["element3"])
工作出色打印结果:element1\element2\element3

但是,另一个sample.json

{
"datalist": [{
        "element1": "content",
        "element2": "content",
        "element3": "content"
    }, {
        "element1": "content",
        "element2": "content",
        "element3": "content"
    }, {
        "element1": "content",
        "element2": "content",
        "element3": "content"
    }

  ]
}
{
"datalist": [{
        "element1": "content",
        "element2": "content",
        "element3": "content"
    }, {
        "element1": "content",
        "element3": "content"
    }, {
        "element1": "content",
        "element2": "content",
        "element3": "content"
    }

  ]
}
这里是第二节元素2不存在

如果element2不存在,它会给出keyrerror:'element2'

for elem in data["datalist"]:
  print(elem["element1"] + ' \\ ' + elem["element2"] + ' \\ ' + elem["element3"])
打印第一部分,但当打印到第二部分时,停止并键入错误:“element2”


你怎么能修好它?thx.

有多种选择:

  • 修复程序,以容忍丢失的数据
  • 修复数据,以便程序能够解析
修复程序 而不是:

print(elem[“element1”]+'\\'+elem[“element2”]+'\\'+elem[“element3”])

您需要检查元素是否存在:

if "element1" in elem.keys() and "element2" in elem.keys() and  "element3" in 
elem.keys():
    print(elem["element1"] + ' \\ ' ...
修复数据
当然,这是最简单的:在datalist的第二个字典中为“element2”添加一个键和一个值。

有多个选项:

  • 修复程序,以容忍丢失的数据
  • 修复数据,以便程序能够解析
修复程序 而不是:

print(elem[“element1”]+'\\'+elem[“element2”]+'\\'+elem[“element3”])

您需要检查元素是否存在:

if "element1" in elem.keys() and "element2" in elem.keys() and  "element3" in 
elem.keys():
    print(elem["element1"] + ' \\ ' ...
修复数据
当然,这是最简单的:在datalist中的第二个字典中为“element2”添加一个键和一个值。

Python字典有一个
get
方法,允许您在找不到键时返回默认值。例如,如果
d={1:2,3:4};v=10
d.get(1,v)
给出
2
d.get(5,v)
给出
10


因此,在这种情况下,您只需为您的代码提供一个默认值,例如
elem.get('element2','element2 missing')
,以表示打印输出中缺少元素,代码将无错误运行。

Python字典有一个
get
方法,允许您在找不到键时返回默认值。例如,如果
d={1:2,3:4};v=10
d.get(1,v)
给出
2
d.get(5,v)
给出
10

因此,在这种情况下,您只需为代码提供一个默认值,例如
elem.get('element2','element2 missing')
,以表示打印输出中缺少元素,代码将无错误运行。

可以使用Try&Except语句:

import json

file = 'home/sample.json'

with open(file) as f:
    data = json.load(f)


try:
    for elem in data["datalist"]:
        print(elem["element1"] + ' \\ ' + elem["element2"] + ' \\ ' + elem["element3"])

except KeyError as e:
    print(e, "Does Not Exist")

您的代码中有一些错误

可以使用Try&Except语句:

import json

file = 'home/sample.json'

with open(file) as f:
    data = json.load(f)


try:
    for elem in data["datalist"]:
        print(elem["element1"] + ' \\ ' + elem["element2"] + ' \\ ' + elem["element3"])

except KeyError as e:
    print(e, "Does Not Exist")


你的代码中有一些错误,但它不完整,也不是我想要的:(忽略所有元素2?如果没有元素2,我想留下空格(“”),或者写“blabla”,我想要结果:element1\element2\element3element1\(空格或blablabla)\element3
element1\element2\element3
我工作过,但它不完整,也不是我想要的:(忽略所有的元素2?如果没有元素2,我想把它留为空格(“”),或者写“blablabla”我想要结果:
element1\element2\element3
element1\(空格或blablablabla)\element3
element1\element2\element3
您可以使用一些if语句检查长度。如果长度为2,您可以打印元素1和元素3。否则打印所有三个元素sthx,如何?@Bazingaa我想要结果:1.line
element1\element2\element3
2.line
element1\(空格或blablablabla)\element3
3.line
element1\element2\element3
您可以使用一些if语句检查长度。如果长度为2,您可以打印元素1和元素3。否则打印所有三个元素sthx,如何?@Bazingaa我想要结果:1.line
element1\element2\element3
2.line
element1\(空格或blablablablablabla)\element3
3.line
element1\element2\element3