从10-K——提取SIC、CIK,创建元数据表

5 python regex finance metadata edgar

我正在与 Edgar 的 10-K 一起工作。为了协助文件管理和数据分析,我想创建一个表,其中包含每个文件的路径、提交的公司的CIK号(这是SEC颁发的唯一ID)以及它所属的SIC行业代码。下面是直观地代表我想要做的事情的图像。

我想要提取的两件事列在每个文档的顶部。CIK # 始终是短语“CENTRAL INDEX KEY:”之后列出的数字。SIC # 始终是“标准工业分类”后面括号内的数字,然后是对该特定行业的描述。

这在所有文件中都是一致的。

要做的事:

  1. 循环遍历文件:提取文件路径、CIK 和 SIC 编号 - 请注意,每个文档我只得到一个返回值,并且每个结果都是按顺序排列的,因此字段之间的记录是对齐的。

  2. 将这些字段合并在一起——我猜最好的方法是将每个字段提取到它们自己的单独列表中,然后合并,也许合并到 Pandas 数据框中?

最终,我将使用此表来帮助我对 SIC 行业之间的数据进行子集化。

感谢您的浏览。如果我可以提供额外的文件,请告诉我。

我想要提取的两条元数据位于每个文档的顶部。 CIK # 始终是短语“CENTRAL INDEX KEY:”之后列出的数字。 SIC # 始终是“标准工业分类”后面括号内的数字,然后是对该特定行业的描述。

Vic*_*ang 1

这是我刚刚为执行类似操作而编写的一些代码。您可以将结果输出到 CSV 文件。第一步,您需要遍历该文件夹并获取所有 10-K 的列表并对其进行迭代。

    year_end = ""
    sic = ""

    with open(txtfile, 'r', encoding='utf-8', errors='replace') as rawfile:
        for cnt, line in enumerate(rawfile):
            #print(line)
            if "CONFORMED PERIOD OF REPORT" in line:
                year_end = line[-9:-1]
                #print(year_end)
            if "STANDARD INDUSTRIAL CLASSIFICATION" in line:
                match = re.search(r"\d{4}", line)
                if match:
                    sic = match.group(0)
                    #print(sic)
                #print(sic)
            if (year_end and sic) or cnt > 100:
                #print(year_end, sic)
                break
Run Code Online (Sandbox Code Playgroud)