Ich habe folgende Beispieldatei:
Code: Alles auswählen
Text1: 1.10-1; Text2: misc; Text3: 2-1.0; Text4: BlaBlaBla;
Text1: 1.02-1; Text3: 2-1.0; Text4: BlaBlaBla;
Text1: 1.00-1; Text2: misc; Text4: BlaBlaBla;
Text1: 1.00-1; Text4: BlaBlaBla;
Text1: blabla;
Text1: 1.00-1; Text3: 2-1.0; Text4: BlaBlaBla;
[...]
Sollte ein Feld in einer Zeile nicht vorkommen soll dieses eingefügt werden.
Ich habe versucht das file in eine liste einzulesen und mit re.search und einigen If-abfragen zum Ergebnis zu kommen, leider fehlt mir wohl mal wieder der entscheidende Tip.
Code: Alles auswählen
#!/usr/bin/python
import re
f = file('test.txt', 'r')
for line in f:
reg1 = re.search(r'Text1: ([\w].*)',line)
reg2 = re.search(r'Text2: ([\w].*)',line)
reg3 = re.search(r'Text3: ([\w].*)',line)
reg4 = re.search(r'Text4: ([\w].*)',line)
sline = line.split(";")
if reg1:
sline.insert(0,reg1.group(1))
else:
sline.insert(0,"Text1: ")
if reg2:
sline.insert(1,reg2.group(1))
else:
sline.insert(1,"Text2: ")
if reg3:
sline.insert(2,reg3.group(1))
else:
sline.insert(2,"Text3: ")
if reg4:
sline.insert(3,reg4.group(1))
else:
sline.insert(3,"Text4: ")
print sline
f.close()
Ausgabe:
(Ich habe group(1) durch group() ersetzt um die Ausgabe etwas besser lesbar zu machen.)
Code: Alles auswählen
['Text1: 1.10-1; Text2: misc; Text3: 2-1.0; Text4: BlaBlaBla;', 'Text2: misc; Text3: 2-1.0; Text4: BlaBlaBla;', 'Text3: 2-1.0; Text4: BlaBlaBla;', 'Text4: BlaBlaBla;', 'Text1: 1.10-1', ' Text2: misc', ' Text3: 2-1.0', ' Text4: BlaBlaBla', '\n']
['Text1: 1.02-1; Text3: 2-1.0; Text4: BlaBlaBla;', 'Text2: ', 'Text3: 2-1.0; Text4: BlaBlaBla;', 'Text4: BlaBlaBla;', 'Text1: 1.02-1', ' Text3: 2-1.0', ' Text4: BlaBlaBla', '\n']
['Text1: 1.00-1; Text2: misc; Text4: BlaBlaBla;', 'Text2: misc; Text4: BlaBlaBla;', 'Text3: ', 'Text4: BlaBlaBla;', 'Text1: 1.00-1', ' Text2: misc', ' Text4: BlaBlaBla', '\n']
['Text1: 1.00-1; Text4: BlaBlaBla;', 'Text2: ', 'Text3: ', 'Text4: BlaBlaBla;', 'Text1: 1.00-1', ' Text4: BlaBlaBla', '\n']
['Text1: blabla;', 'Text2: ', 'Text3: ', 'Text4: ', 'Text1: blabla', '\n']
['Text1: 1.00-1; Text3: 2-1.0; Text4: BlaBlaBla;', 'Text2: ', 'Text3: 2-1.0; Text4: BlaBlaBla;', 'Text4: BlaBlaBla;', 'Text1: 1.00-1', ' Text3: 2-1.0', ' Text4: BlaBlaBla', '\n']
Das Problem das Felder nun doppelt vorkommen wollte ich später angehen, wobei wohl eine Möglichkeit Felder innerhalb einer Liste verschieben zu können dieses Problem gleich lösen könnte...