您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用lxml解析Python中带有错误标题的文本文件

5b51 2022/1/14 8:22:07 python 字数 4389 阅读 396 来源 www.jb51.cc/python

我想用lxml的etree解析文本文件(本地存储).但是我的所有文件(数千个)都有标题,例如: -----BEGIN PRIVACY-ENHANCED MESSAGE----- Proc-Type: 2001,MIC-CLEAR Originator-Name: webmaster@www.sec.gov Originator-Key-Asymmetric: MFgwCgYEVQgBAQICAf

概述

-----BEGIN PRIVACY-ENHANCED MESSAGE-----
Proc-Type: 2001,MIC-CLEAR
Originator-Name: webmaster@www.sec.gov
Originator-Key-Asymmetric:
 MFgwCgYEVQgBAQICAf8DSgAwRwJAW2sNKK9AVtBzYZmr6aGjlWyK3XmZv3dTINen
 TWSM7vrzLADbmYQaionwg5sDW3P6oaM5D3tdezXMm7z1T+B+twIDAQAB
MIC-Info: RSA-MD5,RSA,AHxm/u6lqdt8X6gebNqy9afC2kLXg+GVIOlG/Vrrw/dTCPGwM15+hT6AZMfDSvFZ
 YVPEaPjyiqB4rV/GS2lj6A==

<SEC-DOCUMENT>0001193125-07-200376.txt : 20070913
<SEC-HEADER>0001193125-07-200376.hdr.sgml : 20070913
<ACCEPTANCE-DATETIME>20070913115715
ACCESSION NUMBER:       0001193125-07-200376
CONFORMED SUBMISSION TYPE:  10-K
PUBLIC DOCUMENT COUNT:      7
CONFORMED PERIOD OF REPORT: 20070630
FILED AS OF DATE:       20070913
DATE AS OF CHANGE:      20070913

和第一个<在这种情况下直到第51行(并且在所有情况下都不是51). xml部分如下所示:

</SEC-HEADER>
<DOCUMENT>
<TYPE>10-K
<SEQUENCE>1
<FILENAME>d10k.htm
<DESCRIPTION>FORM 10-K
<TEXT>
<HTML><HEAD>
<TITLE>Form 10-K</TITLE>
</HEAD>
 <BODY BGCOLOR="WHITE">
<h5 align="left"><a href="#toc">Table of Contents</a></h5>

我可以使用lxml动态处理吗?或者我应该使用流编辑器来省略每个文件标题?谢谢!

这是我当前的代码错误.

from lxml import etree
f = etree.parse('temp.txt')

XMLSyntaxError: Start tag expected,'<' not found,line 1,column 1

编辑:

FWIW,这里是file链接.

根据http://www.sec.gov/info/edgar/pdsdissemspec910.pdf的标准,您所拥有的(在PEM机箱内)是由提供的DTD定义的SGML文档.所以,首先转到第48-55页,在那里提取文本,并将其保存为“edgar.dtd”.

要做的第一件事是安装SP并使用它的工具来确保文件确实有效并且可以被DTD解析,以确保你不会浪费大量时间在不会泛的东西上出.

Python附带了一个验证的SGML解析器sgmllib.不幸的是,它从未完全完成,并且在2.6-2.7中被弃用(并在3.x中删除).但这并不意味着它不起作用.所以,试一试,看看它是否有效.

如果没有,我不知道Python有什么好的选择;大多数SGML代码都是C,C或Perl.但是你可以很容易地包装任何C或C库(我从SP开始),只要你习惯用C/C++ython / boost-python /无论使用ctypes编写自己的包装.您只需要包装顶级函数,而不是构建一组完整的绑定.但如果你以前从未做过这样的事情,那可能不是最好的学习时间.

或者,您可以包装命令行工具. SP附带nsgmls.还有另一个用perl编写的同名工具(我认为是http://savannah.nongnu.org/projects/perlsgml/的一部分,但我不是肯定的.)还有其他几十种工具.

或者,当然,您可以在perl(或C)而不是Python中编写整个内容,或仅编写解析层.

总结

以上是编程之家为你收集整理的使用lxml解析Python中带有错误标题的文本文件全部内容,希望文章能够帮你解决使用lxml解析Python中带有错误标题的文本文件所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶