开发者社区> 问答> 正文

Python:如何检查两个字符串的匹配字符数?

是否有更好的方法来检查两个不同字符串的字符匹配数。例如,当我输入“成功”这个词时,我想知道它与确切位置的“成功”一词有多少个字符。在这种情况下,“成功”匹配“成功”的7个字符中的5个。需要将此功能实施到更大的项目中。现在我有一个概念验证python代码:

word1 = input('Enter word1>')
word2 = input('Enter word2>')
#word1 is being compared to word2
word1_character_list = list(word1)
word2_character_list = list(word2)
matching_word_count = 0
for index in range(0,len(word2)):

if word1_character_list[index] == word2_character_list[index]:
    matching_word_count = matching_word_count + 1

print(matching_word_count)
我想知道是否有更简单和/或更短的方法吗?或者使用较少变量的方式。

展开
收起
一码平川MACHEL 2019-02-28 14:29:22 6700 0
4 条回答
写回答
取消 提交回答
  • 交集就行了

    2020-03-18 17:09:21
    赞同 展开评论 打赏
  • 给你个思路,你可以转成集合

    然后,做交集.

    2019-11-18 18:02:46
    赞同 展开评论 打赏
  • 没太看懂你的意思..
    有几种匹配..

    1. A = 成功 B = 我从来都是成功的..
      这种匹配出来返回5
    2. A = 成功 B = 我喜欢成为你的好朋友这个功能很强大.
      这种按我的理解是不能匹配出来的..

    如果是按照我的理解..
    就不能用List把成功两个字拆成2个元素.否则第二种情况也能匹配出来...

    如果是我说的第一种情况..其实方法还是非常多的.

    2019-07-17 23:29:46
    赞同 展开评论 打赏
  • 您可以使用该zip函数同时迭代两个字符串。此外,它被认为更加pythonic迭代列表中的项目并比较值而不是索引列表。

    例如:

    word1 = 'success'
    word2 = 'succeed'
    matches = 0
    for letter1, letter2 in zip(word1, word2):

    if letter1 == letter2:
        matches +=1
    

    matches

    5
    如果你想要真正有创意,你可以在一行中做到:

    matches = sum([l1 == l2 for l1, l2 in zip(word1, word2)])

    matches

    5

    2019-07-17 23:29:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载