递归显示两个Python列表之间的所有差异

时间:2011-01-15 15:26:34

标签: python

在Python中,我有一个将列表写入CSV文件的应用程序,但它必须几乎绝对确保写入没有错误或错误。后者很重要,因为虽然它确实捕获了作者和读者的异常,但是可能发生错误,结果数据与列表中的数据不同。 但是,我必须能够显示它,以便无论谁看到故意隐秘的错误对话框,都会查看日志或联系可能的人。在任何情况下,无论谁看到日志都需要知道如何修复发生的任何错误,以及这样的修复是否涉及数据或我。 当需要将其写入CSV文件时,列表中的实际数据是巨大的,我不能将两个列表都放在日志中,只能将它们之间的差异放在一起。 获取表示这两个列表之间差异的字符串的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

使用Python标准库中的difflib。直接从文档中提取几个示例中的一个:

>>> s1 = ['bacon\n', 'eggs\n', 'ham\n', 'guido\n']
>>> s2 = ['python\n', 'eggy\n', 'hamster\n', 'guido\n']
>>> for line in context_diff(s1, s2, fromfile='before.py', tofile='after.py'):
...     sys.stdout.write(line)  # doctest: +NORMALIZE_WHITESPACE
*** before.py
--- after.py
***************
*** 1,4 ****
! bacon
! eggs
! ham
  guido
--- 1,4 ----
! python
! eggy
! hamster
  guido