Python 解析非结构化txt文件并提取表

Python 解析非结构化txt文件并提取表,python,text-parsing,edgar,Python,Text Parsing,Edgar,我想解析来自SEC的旧式EDGAR txt文件,这些文件包含不同的免费财务数据文件,但解析一个类似于表的txt文件并提取这些数据是非常重要的 下面是示例文件的链接 我创建了一个程序的开始,但它非常脆弱,需要针对不同情况进行大量调整。如果数据长度发生变化,除了2000年而不是1999年的任何其他类似文件都将失败,程序将中断。我不是程序员,我想知道是否有更健壮和可伸缩的方法来解析这种类型的文本文件。谢谢 from bs4 import BeautifulSoup import requests f

我想解析来自SEC的旧式EDGAR txt文件,这些文件包含不同的免费财务数据文件,但解析一个类似于表的txt文件并提取这些数据是非常重要的

下面是示例文件的链接

我创建了一个程序的开始,但它非常脆弱,需要针对不同情况进行大量调整。如果数据长度发生变化,除了2000年而不是1999年的任何其他类似文件都将失败,程序将中断。我不是程序员,我想知道是否有更健壮和可伸缩的方法来解析这种类型的文本文件。谢谢

from bs4 import BeautifulSoup
import requests

fo_99 = requests.get("https://www.sec.gov/Archives/edgar/data/1067983/000095015099001240/0000950150-99-001240.txt")
soup_99 = BeautifulSoup(fo_99.text, "lxml")

tables_99 = soup_99.find_all('caption')
len(tables_99)
table = tables_99[1].find_all("s")
len(table)
_string = str(table[0]).split("\n")


for line in str(table[0]).split("\n"):

    if len(line) > 11:
        if not line.startswith(("<s>")):
            print(  line[0:25], "|", 
                            line[25:30], "|", 
                            line[30:43], "|" ,
                            line[43:55], "|" ,
                            line[55:66], "|",
                            line[66:72], "|",
                            line[72:76], "|",
                            line[76:87], "|",
                            line[87:109], "|",
                            line[109:121], "|",
                            line[121:128], "|",
                            line[128:], "|")
    else:
        print(line)
从bs4导入美化组
导入请求
fo_99=请求。获取(“https://www.sec.gov/Archives/edgar/data/1067983/000095015099001240/0000950150-99-001240.txt")
soup_99=BeautifulSoup(fo_99.text,“lxml”)
tables_99=soup_99.find_all('标题')
len(表99)
table=tables_99[1]。查找所有(“s”)
莱恩(表)
_string=str(表[0]).split(“\n”)
对于str中的行(表[0])。拆分(“\n”):
如果len(线)>11:
如果不是line.startswith((“”)):
打印(第[0:25]行,“|”,
行[25:30],“|”,
第[30:43]行,“|”,
第[43:55]行,“|”,
第[55:66]行,“|”,
第[66:72]行,“|”,
第[72:76]行,“|”,
第[76:87]行,“|”,
第[87:109]行,“|”,
第[109:121]行,“|”,
第[121:128]行,“|”,
第[128:],“|”)行
其他:
打印(行)

在这个项目中,应用“需求是发明之母”这句谚语,你必须。所以这不是编码服务。如果你有一个关于特定问题或困难的特定问题,那就是为什么。这是你投入时间和研究来解决问题的地方。看,也许这对特伦顿没什么帮助。我有一个特别的问题-如何改进这段代码?我不是一个编码员,但我尽了最大努力想出了一些有效的方法。我把它表现得很好,这样就不会被视为懒惰的“在我喝一杯茶的时候帮我解决这个问题”。谢谢Darryl,我会查一查。在这个项目中,应用“需要是发明之母”这句谚语,你必须。所以这不是编码服务。如果你有一个关于特定问题或困难的特定问题,那就是为什么。这是你投入时间和研究来解决问题的地方。看,也许这对特伦顿没什么帮助。我有一个特别的问题-如何改进这段代码?我不是一个编码员,但我尽了最大努力想出了一些有效的方法。我把它表现得很好,这样就不会被视为懒惰的“在我喝一杯茶的时候帮我解决这个问题”。谢谢Darryl,我查一下。