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_Csv_For Loop_Exception - Fatal编程技术网

在尝试用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写入什么?你想完全跳过那一行,还是写一些占位符,或者写一行有名称但没有条形码?我希望在没有条形码的情况下没有。