在尝试用Python编写时尝试和除外
我有下面的代码,它在下面代码的条形码循环部分抛出了一个超出范围的错误在尝试用Python编写时尝试和除外,python,json,csv,for-loop,exception,Python,Json,Csv,For Loop,Exception,我有下面的代码,它在下面代码的条形码循环部分抛出了一个超出范围的错误 for each in data['articles']: f.writerow([each['local']['name'], each['information'][0]['barcodes'][0]['barcode']]) 我编写了一个try-and-except来捕获和处理我正在解析的json中不存在条形码的情况,这在使用print函数进行测试期间非常有效,但是我在尝试将try-
for each in data['articles']:
f.writerow([each['local']['name'],
each['information'][0]['barcodes'][0]['barcode']])
我编写了一个try-and-except来捕获和处理我正在解析的json中不存在条形码的情况,这在使用print函数进行测试期间非常有效,但是我在尝试将try-and-except写入csv文件时遇到了一些问题
有没有人有任何建议或其他方法,我可以尝试让这个工作
在使用print进行测试时,我的try and accept工作如下:
for each in data['articles']:
print(each['local']['name'])
try:
print(each['information'][0]['barcodes'][0]['barcode'])
except:
"none"
非常感谢您的帮助 使用dict.get方法。如果密钥不存在,它将返回None
res = each['information'][0]['barcodes'][0].get('barcode')
正如komatiraju032所指出的,实现这一点的一种方法是通过get,尽管如果字典中的不同元素可能有空/不正确的值,那么为每个元素提供默认值可能会变得很难。要通过try/except执行此操作,您可以执行以下操作:
for each in data['articles']:
row = [each['local']['name']]
try:
row.append(each['information'][0]['barcodes'][0]['barcode'])
except (IndexError, KeyError):
row.append("none")
f.writerow(row)
这将为您提供无替换值,无论哪些列表/目录缺少请求的索引/键,因为任何这些查找都可能出现,但它们都将以相同的方式结束,除了。没有条形码时,您希望向csv写入什么?你想完全跳过那一行,还是写一些占位符,或者写一行有名称但没有条形码?我希望在没有条形码的情况下没有。