gpt4 book ai didi

python - difflib 输出很奇怪,在每个字符上添加了额外的空格

转载 作者:行者123 更新时间:2023-11-28 20:43:57 30 4
gpt4 key购买 nike

我在 Python 中使用 difflib,但在使输出看起来不错时遇到了一些困难。出于某种奇怪的原因,difflib 在每个字符前添加了一个空格。例如,我有一个如下所示的文件 (textfile01.txt):

test text which has no meaning

和 textfile02.txt

test text which has no meaning

but looks nice

这是我如何尝试完成比较的小代码示例:

import difflib

handle01 = open(text01.txt , 'r')
handle02 = open(text02.txt , 'r')

d = difflib.ndiff( handle01.read() , handle02.read() )
print "".join(list(diff))

然后,我得到了这个看起来...非常奇怪的丑陋输出:

t e s t t e x t w h i c h h a s n o m e a n i n g-

- b- u- t- - l- o- o- k- s- - n- i- c- e

如您所见,输出看起来很糟糕。我一直在关注我在网上找到的基本 difflib 教程,根据这些教程,输出看起来应该完全不同。我不知道我做错了什么。有什么想法吗?

最佳答案

difflib.ndiff 比较字符串列表,但您将字符串传递给它们 — 字符串实际上是字符列表。因此,该函数逐个字符地比较字符串。

>>> list(difflib.ndiff("test", "testa"))
[' t', ' e', ' s', ' t', '+ a']

(从字面上看,您可以从列表 ["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
? +

(这里 difflib 非常好,它标记了在 ? 行中添加字符的确切位置。)

关于python - difflib 输出很奇怪,在每个字符上添加了额外的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993923/

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