Python函数问题比较文本段落以获得显示省略或添加新词比较的输出?

Python函数问题比较文本段落以获得显示省略或添加新词比较的输出?,python,python-3.x,function,text,jupyter-notebook,Python,Python 3.x,Function,Text,Jupyter Notebook,我试图编写一个python函数,希望输出如下: 这就是我到目前为止所做的: changed='this is my changed original text. I will add extra info in it.' original='this is my original text. I will not add something else in it.' 将这些文本更改为字典,如下所示(使用函数执行此操作-此处未添加): 这是我迄今为止获得上图所示差异输出的函数: red = &

我试图编写一个python函数,希望输出如下:

这就是我到目前为止所做的:

changed='this is my changed original text. I will add extra info in it.'
original='this is my original text. I will not add something else in it.'
将这些文本更改为字典,如下所示(使用函数执行此操作-此处未添加):

这是我迄今为止获得上图所示差异输出的函数:

red = "\033[31m"
green = "\033[32m"
blue = "\033[34m"
reset = "\033[39m"

pos1 = 0
pos2 = 0
k = 0
deleted = ''
added = ''
f = ''
for pos1 in range(len(new)):
    while new[pos1] != old[pos2] and pos2 < len(old)-1:
        if pos2 == len(old):
                added = new[pos1]
        elif pos2 < len(old):
            print(pos1, pos2, new[pos1], old[pos2])
            deleted = old[pos2] 
            print('deleted:' , deleted)
        
        pos2 = pos2 + 1
        
    
    else: 
        print('now equal')
        
    f = f + ' ' + red + strike(deleted) + reset+ ' ' + blue + added + reset + ' ' + new[pos1] 
    deleted = ''
    
    print('f:', f)       

 
red=“\033[31m”
绿色=“\033[32m”
蓝色=“\033[34m”
reset=“\033[39m”
pos1=0
pos2=0
k=0
已删除=“”
添加=“”
f=“”
对于范围内的pos1(len(新)):
而新[pos1]!=旧[pos2]和pos2
注意:上面的函数中使用的Strike是另一个函数,它可以按我想要的方式来敲击字母

我在jupyter笔记本上得到的最终输出如下:


它给了我所有的新文本,但它没有显示所有删除的文本,如我想要的或新添加的蓝色单词。我在这一点上有点卡住了,无法修复函数以获得所需的输出。

作为旁注,用连续整数作为键的字典几乎总是最好用列表来代替。我这比你现在看到的要复杂得多。假设你看到了word 3,其中,
旧的
是“原始的”,而
新的
是“更改的”。你如何知道(A)这个词是被替换的,(B)“原始的”被删除了,还是(C)“更改的”被添加了?你不看其余的词就无法判断。你需要查看“差异”算法。顺便说一句,Python有一个内置的
difflib
模块来完成这项工作。谢谢你的建议。我签出了difflib,我能够使用它获得我想要的输出。
red = "\033[31m"
green = "\033[32m"
blue = "\033[34m"
reset = "\033[39m"

pos1 = 0
pos2 = 0
k = 0
deleted = ''
added = ''
f = ''
for pos1 in range(len(new)):
    while new[pos1] != old[pos2] and pos2 < len(old)-1:
        if pos2 == len(old):
                added = new[pos1]
        elif pos2 < len(old):
            print(pos1, pos2, new[pos1], old[pos2])
            deleted = old[pos2] 
            print('deleted:' , deleted)
        
        pos2 = pos2 + 1
        
    
    else: 
        print('now equal')
        
    f = f + ' ' + red + strike(deleted) + reset+ ' ' + blue + added + reset + ' ' + new[pos1] 
    deleted = ''
    
    print('f:', f)