从.txt文件中删除ASCII编码的二进制Blob



我想解析10-K文件(公司的财务报表)。苹果的例子可以在这里找到(查找.txt文件)。现在,我正在阅读这篇关于如何解析这些文件的研究论文(见第30-31页)。第一步描述为删除所有ASCII编码段。。。这就是我想弄清楚如何去除它们的原因。

我在StackOverflow上看到了几个关于如何删除非ASCII代码的问题,但这是不同的。ASCII编码段为:所有带有GRAPHICZIPEXCELPDF<TYPE>标记的文档段-我要删除它们。

因此,如果我按照如下方式加载一个txt文件:

fil = open('F:\file.txt','r')
x = fil.read()

如何从这个txt文件中删除所有ASCII编码的段?要删除HTML标记,我使用这里的过程,但ASCII编码段呢?

如果我理解正确,您正在处理的格式在某种程度上与SEC EDGAR过程有关。

我还没有花时间正式查一下。也许你应该。

通过检查链接到的Apple语句,您似乎想要用空字符串替换任何与正则表达式<DOCUMENT>s*<TYPE>(?:GRAPHIC|ZIP|EXCEL|PDF).*?</DOCUMENT>匹配的语句。

免责声明:一个正确的实现将使用XML解析器并提取您想要的元素,而不是试图从词汇上删除您不想要的东西。这在lxml中应该不难。

我最初以为这是XBLR,但事实并非如此。尝试使用ETree解析它会引发异常,因为某些元素(包括<TYPE>)的关闭标记似乎是可选的。最好的方法是找出这是什么格式(EDGAR站点有几个规范;也许其中一个?),找到一个合适的DTD,然后从那里开始。

解决了这些问题后,您希望了解如何使用XPath删除元素,以及如何在(lxml)XPath中使用regex。然后可能会重新实现您已经使用XML和XPath进行的其他提取。

最新更新