字符串中有多少字母被更改

时间:2013-12-10 02:14:55

标签: python string python-3.x

你好,我在编程时相当新,

我想知道是否有一个函数或方法可以让我们找出字符串中已经更改了多少个字母..

示例:

输入:

"Cold"

输出:

"Hold"

因此只更改了一个字母

或示例:

输入:

"Deer"

输出:

"Dial"

因此更改了3个字母

4 个答案:

答案 0 :(得分:2)

我说得太早了。第一个结果谷歌搜索:

https://pypi.python.org/pypi/python-Levenshtein/

这应该能够衡量从一个字符串到另一个字符串所需的最小更改次数。

答案 1 :(得分:2)

如果您不需要考虑字符插入或删除,问题就会减少到只计算字符串之间不同的字符数。

由于您是编程新手,因此必须采用命令式程序:

def differences(string1,string2):
    i=0
    different=0
    for i in range(len(string1)):
        if string1[i]!=string2[i]:
            different= different+1
    return different

稍微更加pythonic的东西是:

def differences(string1,string2):
    different=0
    for a,b in zip(string1,string2):
        if a!=b:
            different+= 1
    return different

或者,如果你想充分发挥作用:

def differences(string1,string2):
    return sum(map(lambda (x,y):x!=y, zip(string1,string2)))

,正如@DSM建议的那样,等同于更易读的生成器表达式:

def differences(string1,string2):
    return sum(x != y for x,y in zip(string1, string2))

答案 2 :(得分:2)

使用itertools库如下(Python 3.x)

from itertools import zip_longest
def change_count(string1, string2):
    count = 0
    for i, (char1, char2) in enumerate(zip_longest(string1, string2)):
        if char1 != char2:
            count = count + 1
    return count        
string1 = input("Enter one string: ")
string2 = input("Enter another string: ")
changed = change_count(string1, string2)
print("Times changed: ", changed)

答案 3 :(得分:0)

查看difflib库,特别是ndiff方法。注意:这对于所需的工作来说有点过分,但是看到两个文件之间的差异真的很棒(你可以看到哪些是新的,哪些是更改的等等)

word1 = "Cold"
word2 = "Waldo"
i = 0
differences = difflib.ndiff(word1, word2)
for line in differences:
    if line[0] is not " ":
        i += 1
print(i)