从.txt文件中移除ASCII编码的二进制块

1 投票
1 回答
902 浏览
提问于 2025-05-01 17:56

我想解析10-K文件(公司的财务报表)。你可以在这里找到苹果公司的例子(找一下.txt文件)。我在阅读一篇研究论文(看第30-31页),里面讲了如何解析这些文件。第一步是去掉所有的ASCII编码段……我想知道怎么去掉它们。

我在StackOverflow上看到很多关于如何去掉非ASCII代码的问题,但这次的情况不一样。ASCII编码段是指:所有带有<TYPE>标签的文档段落,类型包括GRAPHICZIPEXCELPDF - 我想把它们删除。

所以如果我加载一个txt文件,如下所示:

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

我该如何从这个txt文件中删除所有ASCII编码段呢?我用这里的方法去掉HTML标签,但ASCII编码段该怎么处理呢?

暂无标签

1 个回答

1

如果我理解得没错,你正在处理的格式和SEC EDGAR流程有点关系。

我没有专门去查这个,或许你可以去了解一下。

从你提供的苹果声明来看,你似乎想用一个正则表达式 <DOCUMENT>\s*<TYPE>(?:GRAPHIC|ZIP|EXCEL|PDF).*?</DOCUMENT> 来替换掉任何匹配的内容,换成空字符串。

免责声明: 正确的做法是使用XML解析器,提取你想要的元素,而不是试图用简单的方法去删除你不想要的内容。在 lxml 中,这应该不难。

我最开始以为这是 XBLR 格式,但其实不是。用 ETree 来解析时会抛出异常,因为某些元素的闭合标签(包括 <TYPE>)似乎是可选的。最好的办法是先搞清楚这是什么格式(EDGAR网站上有几个规范,也许其中之一就是你需要的),然后找到一个合适的DTD,再从那里开始。

一旦你搞清楚了这些,你就可以看看如何用 XPath删除元素,也许还可以了解一下 如何在(lxml) XPath中使用正则表达式。然后可能需要重新实现你已经用XML和XPath做过的其他提取操作。

撰写回答