在 for 循环中使用 except 解决 AttributeError (Python)

Addressing AttributeError with except in for loop (Python)

Python 的新手,但这是我使用的代码:

lst2 = list()
for i in lst1:
   try: 
      df1 = pd.DataFrame(i.QID1)
except AttributeError:
      "null"
df2 = lst2.append(df1)

lst2 正在生成我想要的输出,但 i.QID1 不存在的实例将由前一个实例的数据填充,而不是“null”。我确定这是因为 'except AttributeError' 部分,只是不确定如何修复它。正如我所说,我是菜鸟。

非常感谢您的帮助!

您的缩进不正确,您没有将“空”值分配给任何内容。

lst2 = list()
for i in lst1:
    try: 
        df1 = pd.DataFrame(i.QID1)
    except AttributeError:
        df1 = "null"
    lst2.append(df1)
  • 如果你想让它发生在循环内,在 for 循环下必须缩进。
  • tryexcept 需要在同一级别的缩进。
  • df1 附加到 lst2 不会 return 任何东西,因此没有必要将其分配给 df2

构建此列表的另一种方法可能是编写一个函数,该函数 return 是给定 i 的数据框(或“空”),并在理解中使用它:

def dataframe_or_null(i):
    try: 
        return pd.DataFrame(i.QID1)
    except AttributeError:
        return "null"

lst2 = [dataframe_or_null(i) for i in lst1]