在尝试用Python编写时尝试和除外

2024-05-15 13:55:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的代码,它在下面代码的条形码循环部分抛出了一个超出范围的错误

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"

非常感谢您的帮助


Tags: and代码nameinfordatainformationlocal
2条回答

使用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)

这将为您提供"none"替换值,而不管那些列表/目录中的哪个缺少请求的索引/键,因为任何这些查找都可能raise,但它们最终都将位于相同的except

相关问题 更多 >