通过拆分查找字符串中的首字母缩写词

时间:2020-01-15 17:58:42

标签: python-3.x

我当前正在编写一个脚本,该脚本应该能够查看字符串是否与给定的部分首字母缩写匹配。

在这种情况下,我从列表中获取每个元素,该列表是一个字符串,并对列表中每个字符串中的每个字符求和。

从那里,我想将候选单词的字母与列表中每个单词的字母进行比较。

完成后,将剥离候选单词的第一个字母,然后对列表中的下一个字符串与新截断的字符串进行比较。

所以理想情况下

1st iteration: 

input: 
word_list = ['toronto', 'dominion', 'bank']
candidate = 'tdbank'

output:

1 matching characters
new candidate word = 'dbank'

2nd iteration:

input:
word_list = ['dominion', 'bank']
candidate = 'dbank'

output:

1 matching characters
new candidate word = 'bank'

3rd iteration:

input:
word_list = ['bank']
candidate = 'bank'

output:

4 matching characters
new candidate word = 'bank'

total_matches = 6

进行迭代,直到达到列表的长度。每个匹配的计数都被返回并求和,因此将两个示例输出的总和为7。这是我到目前为止编写的代码,我无法保存每个数字并将其求和为最终整数并不断截断候选字母。

def compare(a, b):
        count = 0
        for x, y in zip(a, b):
            if x == y:
                count += 1
        return count 

init_sum = len(''.join(init_name_list))
c = 0

for i,j in enumerate(init_name_list):
    c = compare(j, candidate)
    t_candidate = candidate[1:]
    c = compare(j, t_candidate)
    sim = c/init_sum

这不是最有效的方法,但是我只想让它首先工作,所以如果有人理想地知道一种更快/更好的方法,而又不会创建令人敬畏的软件包依赖关系!

1 个答案:

答案 0 :(得分:1)

这是我认为您要尝试执行的操作

c = []
for word in init_name_list:
    c.append(compare(word, candidate))
    candidate = candidate[c[-1]:] #truncates string
sim = sum(c) / init_sum