'''

text1:文本1

text2:文本2

text2_differ_list:文本2中存在差异的地方

text1_differ_list:文本1中存在差异的地方

flag:e(相同点)/n(差异点)

value:相同或者不同的内容

'''

def get_txts_compare_differ(text1, text2):
    str1 = text1
    str2 = text2
    matcher = difflib.SequenceMatcher(None, str1, str2)
    # print(matcher)
    text1_differ_list = []
    text2_differ_list = []
    for op, i1, i2, j1, j2 in matcher.get_opcodes():
        text1_differ_dict = {}
        text2_differ_dict = {}

        if op == 'insert':
            # print("Insert:", str2[j1:j2])
            text2_differ_dict['flag'] = 'n'
            text2_differ_dict['value'] = str2[j1:j2]
            text2_differ_list.append(text2_differ_dict)
        elif op == 'delete':
            # print("Delete:", str1[i1:i2])
            text1_differ_dict['flag'] = 'n'
            text1_differ_dict['value'] = str1[i1:i2]
            text1_differ_list.append(text1_differ_dict)
        elif op == 'replace':
            # print("Replace:", str1[i1:i2], "with", str2[j1:j2])
            text1_differ_dict['flag'] = 'n'
            text1_differ_dict['value'] = str1[i1:i2]
            text1_differ_list.append(text1_differ_dict)
            text2_differ_dict['flag'] = 'n'
            text2_differ_dict['value'] = str2[j1:j2]
            text2_differ_list.append(text2_differ_dict)
        elif op == 'equal':
            # print("Equal:", str1[i1:i2])
            text1_differ_dict['flag'] = 'e'
            text1_differ_dict['value'] = str1[i1:i2]
            text1_differ_list.append(text1_differ_dict)
            text2_differ_dict['flag'] = 'e'
            text2_differ_dict['value'] = str2[j1:j2]
            text2_differ_list.append(text2_differ_dict)
    # print('text1_differ_list==', text1_differ_list)
    # print('text2_differ_list==', text2_differ_list)
    return text1_differ_list, text2_differ_list

Logo

GitCode AI社区是一款由 GitCode 团队打造的智能助手,AI大模型社区、提供国内外头部大模型及数据集服务。

更多推荐