我正在尝试解析 Edgar 数据库中 10K 的部分,当我运行以下代码时,
# pip install edgartools
import pandas as pd
from edgar import *
# Tell the SEC who you are
set_identity("Your Name [email protected]")
filings2 = get_filings(form='10-K', amendments=False,
filing_date="2024-03-01")
filings2_df = filings2.to_pandas()
# Create a list to store the Item 1c text
item1c_texts = []
# Iterate over each 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
# Extract the text for Item 1c
TenK = filing.obj()
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
})
# Create a DataFrame from the Item 1c text data
item1c_df = pd.DataFrame(item1c_texts)
我收到此错误 -
TypeError: cannot unpack non-iterable NoneType object
Cell In[463], line 11
9 if TenK is not None:
10 TenK = filing.obj()
---> 11 item1c_text = TenK['Item 1C']
12 item1c_texts.append({
13 'CIK': cik,
14 'Filing Date': str(filing_date),
(...)
18 'comn': comn
19 })
Show Traceback
有什么方法可以绕过不可迭代的 NoneType 问题吗?我在这个平台上读到了许多其他 NoneType 问题,但没有一个对我很有帮助。
错误信息“TypeError: cannot unpack non-iterable NoneType object”表明
TenK['Item 1C']
这一行代码中的
TenK
变量有时是
None
,而你试图把它当作字典来访问。
你可以通过在访问
TenK
之前检查它是否为
None
来解决这个问题:
for filing in filings2:
# ... other code ...
# Extract the text for Item 1c
TenK = filing.obj()
# Check if TenK is not None before accessing it
if TenK is not None:
item1c_text = TenK.get('Item 1C', 'Item not found')
item1c_texts.append({
'CIK': cik,
'Filing Date': str(filing_date),
'Item 1c Text': item1c_text,
'url': url,
'reporting_date': str(reporting_date),
'comn': comn
})
else:
# Handle the case where TenK is None, for example:
item1c_texts.append({
'CIK': cik,
'Filing Date': str(filing_date),
'Item 1c Text': 'Item not found', # Or any other default value
'url': url,
'reporting_date': str(reporting_date),
'comn': comn
})
这段代码做了以下改进:
-
检查
TenK
是否为None
: 在尝试访问TenK['Item 1C']
之前,先检查TenK
是否为None
。 -
处理
TenK
为None
的情况 : 如果TenK
是None
,则可以跳过该文件或采取其他适当的行动,例如记录错误或使用默认值。 -
使用
.get()
方法 : 使用字典的.get()
方法可以避免出现KeyError
。如果键 'Item 1C' 不存在,TenK.get('Item 1C', 'Item not found')
将返回 'Item not found' 而不是引发异常。
通过进行这些更改,的代码将能够更稳健地处理可能出现的
NoneType
错误。