<p>使用@interjay的评论,我得到了</p>
<pre class="lang-py prettyprint-override"><code>import difflib
red = lambda text: f"\033[38;2;255;0;0m{text}\033[38;2;255;255;255m"
green = lambda text: f"\033[38;2;0;255;0m{text}\033[38;2;255;255;255m"
blue = lambda text: f"\033[38;2;0;0;255m{text}\033[38;2;255;255;255m"
white = lambda text: f"\033[38;2;255;255;255m{text}\033[38;2;255;255;255m"
def get_edits_string(old, new):
result = ""
codes = difflib.SequenceMatcher(a=old, b=new).get_opcodes()
for code in codes:
if code[0] == "equal":
result += white(old[code[1]:code[2]])
elif code[0] == "delete":
result += red(old[code[1]:code[2]])
elif code[0] == "insert":
result += green(new[code[3]:code[4]])
elif code[0] == "replace":
result += (red(old[code[1]:code[2]]) + green(new[code[3]:code[4]]))
return result
</code></pre>
<p>它只依赖于<code>difflib</code>,可以用</p>
<pre class="lang-py prettyprint-override"><code>one_string = "beep boop"
other_string = "beep boob blah"
print(get_edits_string(one_string, other_string))
</code></pre>
<p><a href="https://i.stack.imgur.com/YGJyD.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/YGJyD.png" alt="enter image description here"/></a></p>