ich habe ein decodiertes PCL-File, welches folgenden Aufbau hat (Ausschnitt):
Code: Alles auswählen
000be0cf PCL Parameterised <Esc>*c15D Assign Font ID Number (identifier = 15)
000be0d5 PCL Parameterised <Esc>*c0F Font Control: Delete All Soft Fonts
000be0da PCL Parameterised <Esc>(s1P Primary Font: Spacing: Proportional
000be0df PCL Parameterised <Esc>(s12.00V Primary Font: Height (12.00 points)
000be0e8 PCL Parameterised <Esc>(s4148T Primary Font: Typeface (4148 = Univers)
000be0f0 PCL Parameterised <Esc>(s6.00V Primary Font: Height (6.00 points)
000be0f8 PCL Parameterised <Esc>*p3297.93Y Cursor Position Vertical (3297.93 PCL units)
000be103 PCL Parameterised <Esc>*p275.00X Cursor Position Horizontal (275.00 PCL units)
000be10d Data Gesch<ext>ftsf<ext>hrung: Hans-Lothar Sch<ext>fer (V
000be134 ors.), Steffen B<ext>tjer, Manfred Kreuzer, Karl Mol
000be164 l, Norbert Scheller, Thomas Werner <ext> Aufsichtsra
000be194 t: Hilko Schomerus (Vors.)
000be1af PCL Parameterised <Esc>%1B Enter HP-GL/2 Mode: Pen = PCL
Comment Switch language to HP-GL/2
000be1b3 HP-GL/2 Command IN; Initialise
000be1b6 HP-GL/2 Command CO"$HD-1$AB00800
000be1c6 00131033300000
000be1d4 0000120141231
000be1e2 07XYD 000001
000be1f0 0
000be1fe XXXX 00
000be20c 03
000be21a
000be228
000be236 $;" Comment
Comment Previous sequence not terminated by semi-colon
Comment Switch language to PCL
000be23d PCL Parameterised <Esc>%0A Enter PCL Mode: Cursor = PCL
000be241 PCL Parameterised <Esc>%1B Enter HP-GL/2 Mode: Pen = PCL
Comment Switch language to HP-GL/2
000be245 HP-GL/2 Command IN; Initialise
000be248 HP-GL/2 Command CO"$HD-2$00
000be258 000
000be266 00000000
000be274
000be282
000be290
000be29e
000be2ac
000be2ba
000be2c8 $;" Comment
Comment Previous sequence not terminated by semi-colon
Comment Switch language to PCL
000be2cf PCL Parameterised <Esc>%0A Enter PCL Mode: Cursor = PCL
000be2d3 PCL Parameterised <Esc>%1B Enter HP-GL/2 Mode: Pen = PCL
Comment Switch language to HP-GL/2
Ein Kommentar beginnt mit "$HD-x wobei x einer Zahl zwischen 1 und 7 entspricht.
Der Kommentar endet mit $;".
Ich habe mir folgende Lösung überlegt, und würde gerne von Euch wissen, was man besser, mehr Pyhton-like, machen kann.
Die Daten sind im Prinzip in vier Spalten aufgeteilt.
1. Spalte = Offset
2. Spalte = Art des Eintrags
3. Spalte = Daten
4. Spalte = Erläuterung
Als erstes extrahiere ich die dritte Spalte in einen String, da das die Daten sind, die mich interessieren.
Code: Alles auswählen
COL_COMMENT_BEGIN = 40
COL_COMMENT_END = 54
with open(filename) as f:
value_data = ''.join([l[COL_COMMENT_BEGIN:COL_COMMENT_END]
for l in f])
Code: Alles auswählen
return re.findall(r'"\$HD-[1-7].*?\$;"', value_data)