Gibt es eine clevere Möglichkeit, überlappende Pfade in Python zu kombinieren?

8

Nehmen wir an, ich habe zwei Pfadnamen: head und tail . Sie können sich mit einer beliebigen Anzahl von Segmenten überschneiden. Wenn das nicht der Fall ist, würde ich mich gerne zu ihnen gesellen. Wenn sie sich überschneiden, möchte ich den gemeinsamen Teil erkennen und sie entsprechend kombinieren. Um genauer zu sein: Wenn es Wiederholungen in Namen gibt, würde ich gerne so lange überlappende Teile wie möglich finden. Beispiel

%Vor%

Gibt es für diesen Fall eine sofort verwendbare Bibliotheksfunktion oder muss ich eine implementieren?

    
ardabro 24.04.2015, 18:07
quelle

3 Antworten

3

Sie können ein Listenverständnis in join function verwenden:

%Vor%

Oder wenn der Unterschied nur der Basisname des zweiten Pfades ist, können Sie os.path.basename verwenden, um den bname zu erhalten und mit p1 zu verketten:

%Vor%     
Kasramvd 24.04.2015, 18:10
quelle
3

Ich würde vorschlagen, dass Sie difflib.SequenceMatcher gefolgt von get_matching_blocks

%Vor%

Ans eine allgemeine Lösung

%Vor%

Ausführung

%Vor%     
Abhijit 24.04.2015 18:15
quelle
1

Ich denke, das funktioniert:

%Vor%

Beachten Sie, dass es sich um eine allgemeine Lösung handelt, die für zwei beliebige Strings funktioniert. Daher ist sie möglicherweise nicht so optimiert wie eine Lösung, die nur mit Dateipfaden funktioniert.

    
Shashank 24.04.2015 18:30
quelle

Tags und Links