I would like to parse text files (stored locally) with lxml's etree. But all of my files (thousands) have headers, such as:
-----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
and the first <
isn't until line 51 in this case (and isn't 51 in all cases). The xml portions starts as follows:
</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>
Can I handle this on-the-fly with lxml? Or should I use a stream editor to omit each file's header? Thanks!
Here is my current code and error.
from lxml import etree
f = etree.parse('temp.txt')
XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1
Edit:
FWIW, here is a link to the file.