Seite 1 von 1

string diff

Verfasst: Mittwoch 13. Mai 2009, 22:23
von SElsner
Hallo,

ich habe zwei strings wie z.B.:
"eins1_v2.jpg"
"eins2_v2.jpg"

es ändert sich immer genau eine Zahl, wo im string weiß ich aber nicht (im Beispiel eben die zahl nach "eins").
Nun möchte ich herausfinden, an welcher Position diese sich ändernde Zahl steht.
Die Triviale Herangehensweise wäre mit nem for loop die chars durchzugehen und zu vergleichen. Das ist aber wohl langsam und unelegant. Hat jemand einen besseren Vorschlag? google und difflib helfen mir nicht sonderlich weiter...

Danke schon mal

Sebastian

Verfasst: Mittwoch 13. Mai 2009, 23:36
von birkenfeld
Wenn die erste Ziffernfolge im String interessant ist:

Code: Alles auswählen

import re
text = 'eins1_v2.jpg'
m = re.search(r'\d+', text)
if m:
    print 'gefunden bei', m.start()
else:
    print 'nicht gefunden
Kann es sein, dass du aus "eins1_v2.jpg" automatisch "eins2_v2.jpg" machen willst?

Verfasst: Donnerstag 14. Mai 2009, 08:45
von HerrHagen
Wenn du wirklich den ersten Unterschied finden willst, wirst du wohl an einer Schleife nicht vorbeikommen. Das muss aber ja nicht schlimm sein:

Code: Alles auswählen

>>> def find_first_diff(str1, str2):
	for index, (a, b) in enumerate(zip(str1, str2)):
		if a != b: return index
		
>>> find_first_diff("abc1defg", "abc2defg")
3
Dei dem Anwendungsfall der sich aus deinem Beispiel erahnen lässt, dürfte Geschwindigkeit kaum eine Rolle spielen. Bei mir benötigt das obige Beispiel 0,000006s - das dürfte schnell genug sein.

MFG HerrHagen

Verfasst: Freitag 15. Mai 2009, 14:36
von SElsner
Hey,

vielen Danke fuer die antworten. genau nach dem re.start(0 hab ich gesucht!

Gruss

Sebastian