我在python中寻找库或函数进行字符串比较。我希望输出相对于第一个字符串的索引位置,它与其他字符串相比较。主要类似于语言C中的strcmp()
。
例如
String A='ABCD'
String B='ADCT'
print(compare(A,B))
输出:
1
3
由于String A
与索引位置1和3的String B
不同。
答案 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')