用于python中字符串比较的库

时间:2014-08-07 16:59:38

标签: python string

我在python中寻找库或函数进行字符串比较。我希望输出相对于第一个字符串的索引位置,它与其他字符串相比较。主要类似于语言C中的strcmp()

例如

String A='ABCD'
String B='ADCT'

print(compare(A,B))

输出:

1

3

由于String A与索引位置1和3的String B不同。

4 个答案:

答案 0 :(得分:1)

不是图书馆,而是一种轻松的方式来做你想做的事情:

string_a = 'ABCD'
string_b = 'ADCT'

print ([ind for ind,char in enumerate(string_a) if string_b[ind] != char])
[1, 3]

enumerate通过字符串为您提供每个字符的索引,if string_b[ind] != char检查相应索引处的字符是否不相同。

string_b必须与string_a的长度相同或更短,否则您将获得index error

zip适用于长度不均匀的字符串:

[ ind for ind, tup  in enumerate (zip(string_a,string_b)) if tup[0] != tup[1]]

答案 1 :(得分:0)

我会调查difflib模块:

import difflib

if __name__ == "__main__":

    diff = difflib.ndiff('ABCD', 'ADCT')
    for item in diff:
        print(item)

答案 2 :(得分:0)

我会这样做:

def compare(a, b, printAll=True):
   if len(a)!=len(b):
       return False
   diff = [i for i,char in enumerate(a) if b[i] != char]
   if printAll:
       for pos in diff:
           print(pos)
   else:
       return diff

那么,那么:compare('ABCD', 'ABCT')

输出:

1
3

如果你想要一个列表,那么你可以使用:compare('ABCD', 'ABCT', printAll=False)

输出:

[1, 3]

答案 3 :(得分:0)

A='ABCD'
B='ADCT'

if len(A)==len(B):
        for i in [idx[0]+1 for idx in enumerate(A) if A[idx[0]]==B[idx[0]]]:
            print(str(i)+'\n')