-3

Pythonでこれを行うにはどうすればよいですか?

first string = GOOD MORNING
second string = GOOD BYE

5 文字以降は一致しません

C では、次のように実行できます。

length = strspn(str1,str2);
4

7 に答える 7

2

多様性のために

from itertools import takewhile, izip
sum(1 for x in takewhile(lambda x: x[0] == x[1], 
   izip(iter('GOOD MORNING'), iter('GOOD BYE'))))
5
于 2013-08-31T06:16:50.367 に答える
1
def strspn(s1, s2):
    m = min(len(s1), len(s1))
    mismatches = (i for i, (c1, c2)
                  in enumerate(zip(s1[:m], s2[:m])) if c1 != c2)
    return next(mismatches, m)
于 2013-08-31T14:33:18.447 に答える
1
def matcher(A, B):
    for i in range(min(len(A), len(B))):
        if A[i] != B[i]:
            return i
    return min(len(A), len(B))

print str(matcher("GOOD MORNING", "GOOD BYE")) + " characters match"

def strspn(A, B):
    for i in range(len(A)):
        if A[i] not in B:
            return i
    return len(A)

print "129th has " + str(strspn("129th", "0123456789")) + " digits"

出力

5 characters match
129th has 3 digits
于 2013-08-31T06:08:41.130 に答える
1

2 つの方法:

first = 'GOOD MORNING'
second = 'GOOD BYE'

import difflib
sq = difflib.SequenceMatcher(None,first,second)
m = min(len(first),len(second))
print sq.find_longest_match(0,m,0,m)[2]

print '-----------'

print (i for i in xrange(min(len(first),len(second)))
       if first[i]!=second[i]).next()

結果

5
-----------
5
于 2013-08-31T08:20:59.537 に答える
0

Pythonにそのための組み込み関数があるかどうかはわかりませんが、単純に自分の関数を書くことができます

first = 'GOOD MORNING'
second = 'GOOD BYE'
len1 = len(first)
len2 = len(second)
count = 0
for i in range(len1):
    if i < len2 and first[i] == second[i]:
        count += 1
        continue
    else:
        break
return count
于 2013-08-31T06:17:55.803 に答える