Python 字符串比较库
我在寻找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]]