gpt4 book ai didi

python - 如何将 python 的 difflib.unified_diff 的输出应用于原始字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 11:33:57 26 4
gpt4 key购买 nike

因此,使用 Python 的 difflib ,我可以生成两个字符串的差异:

foo = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n Nullam sed orci lobortis lectus bibendum vehicula.\n Integer iaculis eros porttitor velit porttitor scelerisque.\n Nunc venenatis nibh.'.splitlines()
bar = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n Mauris placerat, odio ut viverra gravida, elit leo tincidunt nisi, a pellentesque velit arcu id magna.\n Integer iaculis eros porttitor velit porttitor scelerisque.\n Nunc venenatis nibh.'.splitlines()

diff = difflib.unified_diff(foo, bar, lineterm='')

如果需要,我们可以检查差异:

>>> print '\n'.join(diff)
---
+++
@@ -1,4 +1,4 @@
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
- Nullam sed orci lobortis lectus bibendum vehicula.
+ Mauris placerat, odio ut viverra gravida, elit leo tincidunt nisi, a pellentesque velit arcu id magna.
Integer iaculis eros porttitor velit porttitor scelerisque.
Nunc venenatis nibh.

这就是我被困的地方。我如何将该差异应用于字符串 foo 以生成字符串 bar

最佳答案

如果你使用 ndiff 那么你可以使用 restore 恢复原始字符串

>>> diff = difflib.ndiff(foo, bar)
>>> diff = list(diff)
>>> print ''.join(difflib.restore(diff, 2))
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam sed orci lobortis lectus bibendum baculo mihi. Integer iaculis eros porttitor velit porttitor scelerisque. Nunc venenatis nibh.
>>> ''.join(difflib.restore(diff, 2))==''.join(bar)
True
>>> ''.join(difflib.restore(diff, 1))==''.join(foo)
True
>>>

请注意,由于统一差异通常会删除比较等于开头的行,因此几乎不可能恢复到原始字符串。 ndiff 显示了所有内容,因此可以直接恢复原始内容。

关于python - 如何将 python 的 difflib.unified_diff 的输出应用于原始字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10033461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com