Hallo Leute!
Wie sieht ein Skript aus, in welchem ich nur einen gewissen Teil einer Datei (read.txt)einlese?
Alles zwischen <data> und </data> soll eingelesen werden, der Rest nichht.
Danke,
Johannes
gezieltes einlesen von daten aus datei
z.B. so (regexp sind u.U. besser, z.B. wenn die Matches Case-insentive sein müssen)
Code: Alles auswählen
in_data = False
buffer = []
for line in file("datei"):
if "<data>" in line:
in_data = True
line = line[line.find("<data>")+6:]
if in_data:
buffer_append(line)
if "</data>" in line:
break
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wie wärs mit sowas:
Code: Alles auswählen
import re
content = '<data>abc</data>'
split_data = re.compile(r'<data>(.*)</data>')
print split_data.findall(content)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hi!
Warum funktioniert das so nicht?
Inputfile sieht so aus:
Danke!
Die Fehlermeldung ist:
Traceback (most recent call last):
File "//MARS/LAV02$/Gebert/SYSTEM/Desktop/file_open_gezielt.py", line 7, in -toplevel-
print split_data.findall(content).read()
TypeError: expected string or buffer
Danke für eure Hilfe.
Johannes
Warum funktioniert das so nicht?
Code: Alles auswählen
import re
content = open('test.txt','r')
print content.read()
print '_________________'
split_data = re.compile(r'<data>(.*)</data>')
print split_data.findall(content)
Code: Alles auswählen
Das ist ein Datenblatt!
<data>
Das sind die relevanten Daten.
Das muss ausgegeben werden.
JAWOHL!!
</data>
Das ist nicht mehr so wichtig!!
ENDE
Die Fehlermeldung ist:
Traceback (most recent call last):
File "//MARS/LAV02$/Gebert/SYSTEM/Desktop/file_open_gezielt.py", line 7, in -toplevel-
print split_data.findall(content).read()
TypeError: expected string or buffer
Danke für eure Hilfe.
Johannes
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Wenn Du mal genau guckst siehst Du dass der gepostete Code nicht mit dem Traceback übereinstimmt (wobei der gepostete Code auch nicht funktionieren sollte, lies noch mal was content.read() macht, und was content ist). Und im Traceback ist dann auch offensichtlich was der Fehler ist, wenn Du das andere Beispiel korrigiert hast.
--- Heiko.
Traceback (most recent call last):
File "//MARS/SYSTEM/Desktop/file_open_gezielt.py", line 7, in -toplevel-
print split_data.findall(content)
TypeError: expected string or buffer
So lautet der Fehler.
Wie muss ich den Code umstellen, dass die Fehlermeldung nicht mehr kommt?
LG
Johannes
File "//MARS/SYSTEM/Desktop/file_open_gezielt.py", line 7, in -toplevel-
print split_data.findall(content)
TypeError: expected string or buffer
So lautet der Fehler.
Wie muss ich den Code umstellen, dass die Fehlermeldung nicht mehr kommt?
LG
Johannes
Zuletzt geändert von keboo am Samstag 25. März 2006, 14:07, insgesamt 1-mal geändert.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
content ist auch nicht der Inhald der Datei als String, sondern es ist dein Dateihandling!keboo hat geschrieben: print split_data.findall(content)
TypeError: expected string or buffer
Mach besser sowas:
Code: Alles auswählen
f = file(...)
content = f.read()
f.close()
...
Code: Alles auswählen
import re
datei = open('test.txt','r')
content = datei.read()
print content
print '_________________'
split_data = re.compile(r'<data>(.*)</data>')
print split_data.findall(content)
Edit: sorry, jens war schneller
äh, nimm diese schlange von meinem hals.