我正在使用Python中的difflib,我在使输出看起来很好时遇到了一些困难.出于某些奇怪的原因,difflib在每个字符前添加一个空格.例如,我有一个文件(textfile01.txt),如下所示:
测试没有意义的文本
和textfile02.txt
测试没有意义的文本
但看起来不错
这是一个关于我如何完成比较的小代码示例:
import difflib
handle01 = open(text01.txt , 'r')
handle02 = open(text02.txt , 'r')
d = difflib.ndiff( handle01.read() , handle02.read() )
print "".join(list(diff))
Run Code Online (Sandbox Code Playgroud)
然后,我得到这个丑陋的输出看起来......非常奇怪:
testtextwhichhasnomea nin g-
- b- u- t- - l- o- o- k- s- - n-c-e
如你所见,输出看起来很糟糕.我刚刚在网上找到了基本的difflib教程,根据这些教程,输出应该看起来完全不同.我不知道我做错了什么.有任何想法吗?
difflib.ndiff比较字符串列表,但是你将字符串传递给它们 - 字符串实际上是一个字符列表.因此,该函数逐字符地比较字符串.
>>> list(difflib.ndiff("test", "testa"))
[' t', ' e', ' s', ' t', '+ a']
Run Code Online (Sandbox Code Playgroud)
(从字面上看,你可以通过在那里添加元素从列表["t", "e", "s", "t"]到列表.["t", "e", "s", "t", "a"]["a"]
您想要更改read()为,readlines()以便您可以按行方式比较这两个文件,这可能是您所期望的.
您还希望更改"".join(...为"\n".join(...在diff屏幕上获得类似输出.
>>> list(difflib.ndiff(["test"], ["testa"]))
['- test', '+ testa', '? +\n']
>>> print "\n".join(_)
- test
+ testa
? +
Run Code Online (Sandbox Code Playgroud)
(这里difflib非常好,并且标记了?在行中添加字符的确切位置.)
| 归档时间: |
|
| 查看次数: |
1308 次 |
| 最近记录: |