2017-11-11 3 views
0

Wenn ich zwei Zeichenfolgen habe, wie finde ich den Index, wo die Zeichenfolge nicht mehr übereinstimmt? 'abcdefghijk' und das falsche Alphabet 'abcdxyz', ich weiß, dass sie bei Index 4 nicht mehr übereinstimmen, aber wie kann ich das in einer Funktion einstellen?Einen bestimmten Index finden?

+0

Vielleicht können Sie find() in einer Schleife verwenden und brechen, wenn es Ihre Zeichenfolge übereinstimmen tut? –

Antwort

0

Verwenden Sie die enumerate() Funktion den Index zu finden, für die das Schreiben in der zweiten Zeichenfolge nicht in der ersten Zeichenfolge, die den aktuellen Buchstaben überein -

def matcher(str1, str2): 
    for idx, item in enumerate(str1): 
    if item != str2[idx]: 
     return idx 
    return -1 # if no differing letter in second string 

print(matcher('abcdefghijk', 'abcdxyz')) # 4 
0

einige mit einfachen comparisons von slicedstrings:

Wir können eine einfache function erstellen, die slicing die strings hält, bis es das Ende der ersten string erreicht und vergleicht sie:

def match(s1, s2): 
    for i in range(len(s1)+1): 
     if s1[:i] != s2[:i]: 
      return i - 1 
    return -1 

und einige Tests:

>>> match('abcdefghijk', 'abcdxyz') 
4 
>>> match('124', '123') 
2 
>>> match('123456', '123abc') 
3 
>>> match("abcdef", "abcdef") 
-1 
Verwandte Themen