python打印错误
sample.jsonpython打印错误,python,json,Python,Json,sample.json { "datalist": [{ "element1": "content", "element2": "content", "element3": "content" }, { "element1": "content", "element2": "content", "element3": "content" }, { "element1":
{
"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\element3
element1\(空格或blablabla)\element3
element1\element2\element3
我工作过,但它不完整,也不是我想要的:(忽略所有的元素2?如果没有元素2,我想把它留为空格(“”),或者写“blablabla”我想要结果:element1\element2\element3
element1\(空格或blablablabla)\element3
element1\element2\element3
您可以使用一些if语句检查长度。如果长度为2,您可以打印元素1和元素3。否则打印所有三个元素sthx,如何?@Bazingaa我想要结果:1.lineelement1\element2\element3
2.lineelement1\(空格或blablablabla)\element3
3.lineelement1\element2\element3
您可以使用一些if语句检查长度。如果长度为2,您可以打印元素1和元素3。否则打印所有三个元素sthx,如何?@Bazingaa我想要结果:1.lineelement1\element2\element3
2.lineelement1\(空格或blablablablablabla)\element3
3.lineelement1\element2\element3