Hallo an alle,

Es geht um folgendes.
Ich habe zwei .txt Dateien mit folgenden Inhalten:

Datei1:
Schlüssel: Y&XXXXXXXXXX,

Werte: Y:10_XXXXXXXX, Y:XXXXXXX, Y:XXXXXXXX, Y:XXXXX, Y:XX_XXXXX, Y:XX_XXXXXXXX, YH:XX_XXXXXXXXX, YH:XX_XXXXXXXXX, Y:10_XXXXXXXX, Y:XXXXXXX, Y:XXXXXXXX, Y:XXXXX, Y:XX_XXXXX, Y:XX_XXXXXXXX, YH:XX_XXXXXXXXX, YH:XX_XXXXXXXXX, Y:10_XXXXXXXX, Y:XXXXXXX, Y:XXXXXXXX, Y:XXXXX, Y:XX_XXXXX, Y:XX_XXXXXXXX, YH:XX_XXXXXXXXX, YH:XX_XXXXXXXXX, Y:10_XXXXXXXX, Y:XXXXXXX, Y:XXXXXXXX, Y:XXXXX, Y:XX_XXXXX, Y:XX_XXXXXXXX, YH:XX_XXXXXXXXX, YH:XX_XXXXXXXXX, Y:10_XXXXXXXX, Y:XXXXXXX, Y:XXXXXXXX, Y:XXXXX, Y:XX_XXXXX, Y:XX_XXXXXXXX, YH:XX_XXXXXXXXX, YH:XX_XXXXXXXXX

Datei2:

Schlüssel: User 1

Werte: Y&XXXXXXXX, Y&10_XXXXXXXX, Y:XXXXXXX, Y:XXXXXXXX, Y:XXXXX, Y:XX_XXXXX, Y:XX_XXXXXXXX, YH:XX_XXXXXXXXX, YH:XX_XXXXXXXXX

In beiden Dateien ist natürlich mehr Inhalt drin. Also bei beiden mehr als 1000 Zeilen.

In Datei2 stehen ganz viele User und deren Namen ist der Schlüssel. Diese User haben bestimmte Berechtigungen als Rollen. Jede Rolle wird als Wert (durch Komma getrennt) dargestellt in dieser Ansicht wie gezeigt.

Zwischen allen Schlüsseln/Werten ist jeweils eine Zeile frei.

Wichtig ist nur das die Werte hinter dem Komme zu dem Schlüssel darüber gehören.

Die Rollen sind immer so aufgebaut das sie mit einem X oder einem Y oder ganz selten auch mit einem YH: anfangen, was nach dem Doppelpunkt kommt, gibt nur an um was für Berechtigungen es sich handelt, das habe ich durch die vielen X dargestellt.

Die Rollen die ein & und kein : haben sind Sammelrollen die viele Einzelrollen (das sind die mit :) zusammenfassen. Hat ein User also eine Rolle mit einem & dann hat er alle Berechtigungen, die in dieser Sammelrolle enthalten sind.

Allerdings haben viel User Einzelrollen, die sie aber eigentlich schon durch eine Sammelrolle erhalten haben.

Um das zu bereinigen wollte ich ein Python Programm schreiben welches die Datei2 für jeden User (Schlüssel) durchgeht, sie dich rollen mit dem :, also die Einzelrollen nimmt, in Datei1 schaut, ob diese Einzelrolle in einer Sammelrolle enthalten ist, die ebenfalls dem User zugewiesen ist, was bedeuten würde er hätte zweimal diese Rolle.
Wenn das der Fall ist dann soll in einer neuen Datei (Erstmal egal ob csv oder txt, lieber aber direkt eine CSV Datei) eine neue User liste sein in der eben alle Einzelrollen entfernt wurden die der User halt schon durch eine Sammelrolle erhält.

Ich habe mich mehrere Stunden damit beschäftigt und auch versucht mit KI mir helfen zu lassen aber es funktioniert nicht. Entweder werden falsche Sachen geändert, erkannt oder gesucht oder es funktioniert gar nicht.

Aber eigentlich stell ich mir das gar nicht so unfassbar komplex vor.

Im Screenshot ist ein Beispiel zu sehen wie die txt Dateien aussehen.
Beide sind genauso aufgebaut nur das bei der einen halt der Schlüssel ein Name ist und bei der anderen ist der Schlüssel der Name der Sammelrolle, bei der einen ist der Wert alle Berechtigungen (Sammel und Einzelrollen) eines Users und bei der anderen sind der alle Einzelrollen aufgelistet, die die Sammelrolle enthält.

Und beide enthalten natürlich weitaus mehr Inhalte als nur das eine wie in dem Beispiel auf dem Bild zu sehen ist.

Vielleicht ist hier ja jemand der mir hier eine Lösung vorschlagen kann.
Danke VG