Also grundsätzlich gibt es vier Werte, die mich interessieren, davon ist einer eindeutig, und zwar "guid". Das Feld SID= ist in der Realität unterschiedlich, einzig und allein die guid= bleibt immer gleich bei Duplikaten.
So stehen die Zeilen z.B. im Log:
Code: Alles auswählen
Adding car: SID:0 name=Hans model=ferrari_458_gt2 skin=2011_team_sofrev_asp guid=7972871910
Adding car: SID:1 name=Peter model=ferrari_458_gt2 skin=af_corse guid=7991905259
Ich lese die Textdatei so ein: (input_log ist die txt Datei)
Code: Alles auswählen
input_list = open(input_log).readlines()
for zeile in input_list:
if(zeile.find("Adding car")!=-1):
output_list.append(zeile)
return output_list
Da kommt dann raus:
Code: Alles auswählen
Adding car: SID:0 name=Hans model=ferrari_458_gt2 skin=2011_team_sofrev_asp guid=7972871910
Adding car: SID:1 name=Peter model=ferrari_458_gt2 skin=af_corse guid=7991905259
Das splite ich dann, weil ich mir dachte, einzeln kann man die Werte besser verarbeiten:
Code: Alles auswählen
bloecke = []
for zeile in output_list:
bloecke.append(zeile.split())
return bloecke
Ergebnis ist:
Code: Alles auswählen
['Adding', 'car:', 'SID:0', 'name=Hans', 'model=ferrari_458_gt2', 'skin=2011_team_sofrev_asp', 'guid=7972871910']
['Adding', 'car:', 'SID:0', 'name=Hans', 'model=ferrari_458_gt2', 'skin=2011_team_sofrev_asp', 'guid=7972871910']
['Adding', 'car:', 'SID:1', 'name=NeRo2', 'model=ferrari_458_gt2', 'skin=af_corse', 'guid=7991905259']
Hier ist es natürlich schon sehr unschön, da ein name= durchaus ein Leerzeichen enthalten kann. Aber das wäre dann die nächste Baustelle.
Das wäre jetzt die "Basis", anhand der ich gerne die List-Einträge, wo die guid= den selben Wert hat, löschen würde.
Ich habe dann versucht das Ganze in ein DIC zu überführen:
Code: Alles auswählen
def convert_to_dic(input_list):
dict1 ={}
zahler = 0
for zeile in input_list:
dict1[zahler] = dict([ (zeile[3].split("=")) ,(zeile[4].split("=")), (zeile[5].split("=")), (zeile[6].split("=")) ])
print(dict1[zahler])
zahler=zahler+1
Das gibt mir quasi dict1[n] zurück, da habe ich dann die werte separiert:
Code: Alles auswählen
{'model': 'ferrari_458_gt2', 'guid': '7972871910', 'name': 'Hans', 'skin': '2011_team_sofrev_asp'}
{'model': 'ferrari_458_gt2', 'guid': '7972871910', 'name': 'Hans', 'skin': '2011_team_sofrev_asp'}
{'model': 'ferrari_458_gt2', 'guid': '7991905259', 'name': 'Peter', 'skin': 'af_corse'}
Entweder habe ich Dictionaries grundsätzlich nciht verstanden, oder man kann tatsächlich nur pro key genau ein value speichern...ist das richtig? Daher habe ich das mit dem zähler gemacht.
Sollte ich jetzt mit dem dict1[n] weiter machen um die Duplikate zu entfernen, oder mit der List einen Schritt vorher?