【问题标题】:How to output difference between two text files? [closed]如何输出两个文本文件之间的差异? [关闭]
【发布时间】:2014-10-10 18:35:56
【问题描述】:

我想知道如何比较两个文本文件,突出它们之间的区别?例如:

文件1.txt

AAAAA
BBBBB
CCCCC

文件2.txt

AAAAA
BBBBB

比较这两个文件后,我希望得到以下输出:

CCCCC

我正在使用 Python,但没有成功尝试过 sed 和 grep(我也对 linux shell 的执行方式感兴趣)。

【问题讨论】:

  • 这个问题比我想你理解的要复杂得多。有full commercial packages 旨在做这个任务。
  • 嘿!讽刺有什么意义?我不是在寻找这样做的软件;)我是 Python 初学者,所以我尝试尽可能多地学习
  • @rogerherbert 我不认为这是讽刺;这不是一项简单的任务,如果您必须询问从哪里开始,它可能超出您当前的水平。
  • @Cyber​​:世界上有很多复杂的东西已经被实现为python库。区分文本文件就是其中之一。
  • @jonrsharpe 超出我目前的水平?当然可以,但是要求你已经知道的东西是无意义的,不是吗?

标签: python text sed grep comparison


【解决方案1】:
sort File1.txt File2.txt | uniq -u

【讨论】:

  • 很好,这也有效:)
  • 优雅。但是,这条线可以在 python 上运行吗?它看起来像 linux bash 命令。
  • @user781486:这应该适用于任何支持管道的外壳。
【解决方案2】:

我在python中使用过这个,很简单,但是很有效

>>> File1 = open("file1","r")
>>> File2 = open("file2","r")
>>> Dict1 = File1.readlines()
>>> Dict2 = File2.readlines()
>>> print Dict1
['AAAAA\n', 'BBBBB\n', 'CCCCC\n']
>>> print Dict2
['AAAAA\n', 'BBBBB\n']
>>> DF = [ x for x in Dict1 if x not in Dict2 ]
>>> print DF
['CCCCC\n']
>>> print DF[0]
CCCCC

>>> print DF[0].rstrip()
CCCCC

【讨论】:

    【解决方案3】:

    Python 有一个专门用于执行此操作的库:difflib。您可以将两个文本文件的内容提供给它,它会返回两者之间的差异。

    例如,见http://pymotw.com/2/difflib/

    【讨论】:

    • 感谢您的回答!但我已经搞砸了,它给出了减号和加号,并不是我想要的,我只需要输出差异而不需要其他东西
    • 我知道该怎么做,谢谢 :) 但可能有一个更直接的解决方案,可能使用 shell 命令
    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2023-04-04
    • 2010-11-23
    相关资源
    最近更新 更多