Python 字符串比较库

-5 投票
4 回答
1268 浏览
提问于 2025-04-18 16:26

我在寻找Python中用于字符串比较的库或函数。我想要的结果是,能显示出第一个字符串与另一个字符串不同的索引位置。这个功能有点像C语言中的strcmp()

例如:

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

print(compare(A,B))

输出:

1

3

因为字符串A在索引位置1和3与字符串B不同。

4 个回答

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]
0

在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够好,或者是我们对某些概念理解得不够透彻。比如,有人可能在使用某个库的时候,发现它的功能和自己想要的不太一样,这就需要我们去查找资料,看看别人是怎么解决类似问题的。

在这个过程中,StackOverflow是一个很好的资源。这里有很多程序员分享他们的经验和解决方案。你可以在上面找到很多问题的答案,或者看到别人是如何处理特定情况的。

总之,遇到问题时,不要着急,先查查资料,看看有没有人遇到过类似的情况,可能会找到解决办法。

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')
1

我建议你看看 difflib 这个模块:

import difflib

if __name__ == "__main__":

    diff = difflib.ndiff('ABCD', 'ADCT')
    for item in diff:
        print(item)
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]]

撰写回答