You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解析Edgar数据库10-K文档Item 1c时如何忽略或绕过NoneType不可迭代对象实例

解析Edgar数据库10-K文档Item 1c时如何忽略或绕过NoneType不可迭代对象实例

看起来你在批量提取Edgar平台上10-K文档的Item 1C内容时遇到了NoneType相关问题——这在处理SEC披露文档时太常见了,毕竟不是每家公司的10-K都会严格包含所有条目,或者文档结构可能存在格式偏差。咱们一步步来解决这个问题:

  • 给Item 1C提取加安全兜底
    有些10-K可能根本没有披露Item 1C内容,这时候TenK['Item 1C']会返回None,后续如果对这个值做迭代操作(比如分割文本、遍历字符)就会触发“NoneType不可迭代”的错误。你可以用字典的get方法来做安全提取:

    # Extract the text for Item 1c
    TenK = filing.obj()
    # 若TenK不为空则提取Item 1C,找不到或为空时返回空字符串
    item1c_text = TenK.get('Item 1C', "") if TenK is not None else ""
    

    这样即使没有找到目标内容,也会得到一个空字符串而非None,避免后续处理报错。

  • 处理文档加载失败的情况
    有时候filing.obj()可能因为网络波动或者文档格式异常返回None,直接取值会导致程序崩溃。所以要先确认文档是否加载成功:

    TenK = filing.obj()
    if TenK is None:
        # 标记文档加载失败,也可以选择直接跳过该条目
        item1c_text = "Failed to load 10-K document"
    else:
        # 安全提取Item 1C内容
        item1c_text = TenK.get('Item 1C', "")
    
  • 可选:跳过无有效内容的条目
    如果你不需要保留没有Item 1C的记录,可以直接跳过当前filing,不将其加入结果列表:

    for filing in filings2:
        url = filing.document.url
        cik = filing.cik
        filing_date = filing.header.filing_date
        reporting_date = filing.header.period_of_report
        comn = filing.company
        
        TenK = filing.obj()
        # 检查文档是否加载成功,且Item 1C存在并有效
        if TenK is None or not TenK.get('Item 1C'):
            continue  # 跳过该条目,不添加到结果列表
        
        item1c_text = TenK['Item 1C']
        item1c_texts.append({
            'CIK': cik,
            'Filing Date': str(filing_date),
            'Item 1c Text': item1c_text,
            'url': url,
            'reporting_date': str(reporting_date),
            'comn': comn
        })
    

另外提个小细节:有些公司的10-K里Item名称可能有细微差异,比如写成Item 1.C或者带句号的Item 1C.,如果发现很多条目提取不到,可以临时加一行print(TenK.keys())查看实际的键名,调整你的提取关键词即可。

备注:内容来源于stack exchange,提问作者Sharif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:43:05