Sortieren von Daten in Listen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pumpkinpy
User
Beiträge: 10
Registriert: Freitag 26. Mai 2017, 11:45

Hallo alle Zusammen,

ich stehe gerade vor einem Sortierproblem.
Heruntergebrochen auf ein Minimalbeispiel möchte ich Zeilen aus einem String in eine Liste sortieren.
Ich habe einen String:

Code: Alles auswählen

string = """
das ist mein alpha.bla_1
noch was alpha.blubber_1
bluaa veorj alpha.blubber_2"""
und möchte diesen in eine Liste sortieren, die dann wie folgt aussieht:

Code: Alles auswählen

[[das ist mein alpha.bla_1],[noch was alpha.blubber_1, bluaa veorj alpha.blubber_2]]
sortiert werden soll also nach dem pattern welches nach dem alpha folgt. das habe ich als liste vorliegen. In diesem Fall [bla, blubber].
Habe mich schon in regex und sort eingelesen, konnte aber nichts finden wie ich das Problem angehen könnte.
Hoffe ich konnte mich verständlich genug ausdrücken. Danke an alle.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@Pumpkinpy: Du mußt Dein Problem in Teilprobleme zerlegen, die Du einfach lösen kannst, also 1. String in Liste verwandeln, 2. von einzelnem Element das Sortierkriterium extrahieren, 3. nach Sortierkriterium sortieren. Welche Punkte hast Du schon gelöst, und wie sehen Deine Versuche bei den anderen Punkten aus?
Pumpkinpy
User
Beiträge: 10
Registriert: Freitag 26. Mai 2017, 11:45

Habe eine tolle Lösung gefunden,

bin gestern Abend noch ein Packet names itertools gedunden. Habe den String zeileweise in eine Liste geschrieben mit string.splitlines().

Code: Alles auswählen

sortedData = sorted(lines, key = paramsort)
sortedLines = [list(v) for k, v in itertools.groupby(sortedData, paramsort)]
als paramsort hab ich

Code: Alles auswählen

def paramsort(x):
    test = re.findall(r'alpha\.(.*?)_', x)
    return test
verwendet.
Funktioniert wunderbar.
Antworten