Python difflib Praxisbeispiel
Für eine Communityseite möchte ich, wenn ein Beitrag geändert wird, dem Vorautor eine E-Mail mit den Änderungen schicken. Die klassische Ausgabe eines Diffs gefällt mir besonders gut. Hier ist ein kleines Beispiel wie das Pythonmodul difflib zu gebrauchen ist:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #!/usr/bin/env python # -*- coding: utf-8 -*- import difflib a = """ Lorem ipsum dolor sit amen, consectetuer adipiscing elit. Nunc ac ante sed ante imperdiet auctor. Fusce dignissim, magna eu feugiat tincidunt, nibh metus tincidunt augue, quis ullamcorper lorem pede a ante. """ b = """ Lorem ipsum dolor sit amen, consectetuer adipiscing eliot. Nunc ac ante sed ante imperdiet auctor. Fusce dignissim, magna eu feugiat tincidunt, nibh metus tincidunt augue, quis ullamcorper lorem pede a onte! """ d = difflib.unified_diff( a.splitlines(), b.splitlines(), 'Original', 'Current', lineterm='' ) print '\n'.join(d) |
Und die Ausgabe:
1 2 3 4 5 6 7 8 9 | --- Original +++ Current @@ -1,4 +1,4 @@ -Lorem ipsum dolor sit amen, consectetuer adipiscing elit. Nunc ac ante sed +Lorem ipsum dolor sit amen, consectetuer adipiscing eliot. Nunc ac ante sed ante imperdiet auctor. Fusce dignissim, magna eu feugiat tincidunt, nibh metus -tincidunt augue, quis ullamcorper lorem pede a ante. +tincidunt augue, quis ullamcorper lorem pede a onte! |
Wer eher nach einer farbigen, detailierten Ausgabe wie bei Trac sucht (hier im Beispiel übernimmt Pygments im Nachhinein das Highlighting), sollte sich auch das HtmlDiff Modul anschauen.
Geschrieben am: 19. Juni 2008 um 13:31 Uhr, Abgelegt in Django & Python
Kommentare zu diesem Artikel (0):
Kommentar schreiben