python - 检查单词之间的编辑次数

标签 python python-3.x

我的脚本完全遇到了障碍。我有一个包含多对单词的 HTML 文档。我必须从 HTML 文档中提取单词,然后检查单词的相似程度。如果这些单词在一次编辑之内,则可以接受,如果多次编辑不同,则失败。

(ex: abc – ab; abc – bc; abc – ac = pass, 
abc – Abc; abc – acc; abc – abD = pass, 
abc – acb = fail, 
abc – abc = fail)

我将单词提取到列表中元组内的元组中。我的问题是访问该列表并实际检查单词的相似程度。

[(('Bild', 'mild'), ('bitte', 'Bitte'), ('bitte', 'bitten'), ('Bitte', 
'Mitte'), ('Fahne', 'ahne'), ('Schlange', 'Schlangen'), ('windet', 
'wendet'), ('sprich', 'sprach'), ('ob', 'Bob'), ('weiße', 'weise'), 
('Heidi', 'Hilde'), ('aktiv', 'aktiv'), ('wild', 'Wind'), ('schlagen', 
'Schlangen'), ('Küche', 'Mücke'), ('Rücken', 'Küken'), ('Eleonore', 
'Elefant'))]

感谢 Rakesh,这个问题已经得到解决:

    pass_score = 0
    fail_score = 0
    for i in new_pairs[0]:
        diff = difflib.ndiff(i[0], i[1])
        a, s = 0, 0
        for j in diff:
            if j.startswith('-'):
                s += 1
            if j.startswith('+'):
                a += 1
        if a > 1 or s > 1:
            print("FAIL, more than one edit.", i)
            fail_score += 1
        elif a == 0 and s == 0:
            print("FAIL, these are the same word", i)
            fail_score += 1
        else:
            print("PASS, only one edit required.", i)
            pass_score += 1

    print("Number of PASSING word-pairs:", pass_score)
    print("Number of FAILING word-pairs:", fail_score)

最佳答案

我认为你可以使用 difflib lib 来完成您正在尝试的事情。

示例代码

import difflib

n = [(('Bild', 'mild'), ('bitte', 'Bitte'), ('bitte', 'bitten'), ('Bitte', 'Mitte'), ('Fahne', 'ahne'), ('Schlange', 'Schlangen'), ('windet','wendet'), ('sprich', 'sprach'), ('ob', 'Bob'), ('weiße', 'weise'), ('Heidi', 'Hilde'), ('aktiv', 'aktiv'), ('wild', 'Wind'), ('schlagen', 'Schlangen'), ('Küche', 'Mücke'), ('Rücken', 'Küken'), ('Eleonore', 'Elefant'))]

for i in n[0]:
    diff = difflib.ndiff(i[0], i[1])
    a, s = 0, 0
    for j in diff:
        if j.startswith('-'):
            s += 1
        if j.startswith('+'):
            a += 1
    if a > 1 or s > 1:
       print "Edit more that 1", i
    else:
       print "Only One Edit", i

关于python - 检查单词之间的编辑次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47940391/

相关文章:

regex - python re.split() 空字符串

python - 从网页表中读取列

python - 在pygame中射击子弹

python - 尝试编写Python从 'nlm.nih.gov'请求API

python - 在背景中绘制随机星星,pygame

python - 使用月份日期时间合并多个数据框

python - 将用户名存储在Google App Engine上,而不是每次都调用get_current_user?

python - 在 Cloud Run 实例中访问和使用 Cloud Storage 中的 csv 文件

python - 如何通过 'Exclude' 条件创建行并扩展到现有的 Dataframe 中?

PHP——运行 shell_exec() 不返回所有输出