ich stand wiedermal vor dem Problem eine Datei, die aus Schlüssel/Werte-Paaren (getrennt durch ein "=") besteht in ein Dictionary einzulesen. Das Spezielle an der Datei ist, daß Werte, in Anführungszeichen eingeschlossen auch über mehrere Zeilen gehen können. Mit ConfigParser und Konsorten ist da kein Staat zu machen! Aber Python hat ja doch die Batterien schon drinn. Mit einer Regular Expression hab ich jetzt was gebastelt, das Ihr euch gerne mal anschaunen könnt.
Code: Alles auswählen
#!/usr/bin/env python
import sys, re
def file_to_dict(name):
f = file(name)
c = f.read()
f.close()
result = dict([(x[1],x[2].strip('"').strip())
for x in re.findall('((\w+)\s*=[ \t\f\v]*(("[^"]*")|(\S*))[^\n]*\n)',c)])
return result
if len(sys.argv) == 2:
print file_to_dict(sys.argv[1])
Code: Alles auswählen
# Dies ist eine Kommentarzeile
option1 = "nix"
option2 = viel
option3 = "
Hallo
Welt"
option4 = 4711 #mit kommentar dahinter
noch_eine_Option = 0 ; noch ein kommentar
leer =
abg = "alpha beta gamma"
Gruß
Dookie