问题标签 [difflib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
302 浏览

python - windows的python和cygwin的python生成的文件的区别

我有一个用python生成文件的脚本,在某些情况下,脚本是用windows中的python执行的,在其他情况下是用cygwin的python执行的

文件的文本是相同的,但如果我使用 difflib,

文件不同。

而且,如果我使用 md5 得到不同的哈希值。

如果我将文件与kdiff3我得到

如何比较两个文件之间的文本差异?一个是用 windows 的 python 生成的,另一个是用 windows 的 python 生成的。

0 投票
1 回答
94 浏览

python - 从 10 行字符串中查找相等的序列

我正在尝试从包含字符串行的文本文件中找到最长的公共序列。输出也应该是带有对齐行的文本文件,例如:

查找序列 - efghijk

输出文件:

我正在考虑使用 difflib,将行保存到列表,然后比较 list[0] 和 list[1],从这两个字符串中找到最长的序列,然后 difflib(None, sequence, list[2]) 等。

但是我在编码时遇到了一些麻烦,我绝对不知道如何处理输出文件。

谢谢你的建议,扬

0 投票
0 回答
428 浏览

python - difflib 的速度助手

我正在使用 difflib ( SequenceMatcher) 来完成这项任务:对于 3000 个有错字的书名,在数据库中找到最接近的匹配项,其中有 128500 个(据称)没有错误的书名。代码很简单:

它有效,但速度很慢。大约 100 小时后,它在 3000 个列表中的比例约为 40%。问题当然是:128500 个标题的 3000 次迭代 = 3.855 亿次调用SequenceMatcher.

我正在寻找优化这一点的方法。在这篇文章中,OP 建立了一个索引,对其进行了查询,并且 SequenceMatched 了该查询的结果。我认为这是一个很好的方法,但如何实施呢?

该脚本只是一次性的,没有花哨的应用程序或任何东西。我的小时预算有限。

编辑Whoosh 支持模糊术语查询。SQLite 有LIKE.

我应该研究其他可能性吗?

0 投票
1 回答
1654 浏览

python - 来自两个“文件”的行号的 Python 统一差异

我试图找出一种方法来创建统一的差异,其中行号仅显示N上下文行。我一直无法做到这一点difflib.unified_diff。我需要显示两个文件中的更改。

我能来的最接近的是diff在命令行上使用,如下所示:

/usr/bin/diff --unchanged-line-format=' %.2dn %L' --old-line-format="-%.2dn %L" --new-line-format="+%.2dn %L" file1.py file2.py

我只想显示N上下文行,/usr/bin/diff似乎不支持自定义行格式的上下文(例如,-U2 与 --line-format " conflicting output style options" 不兼容)。

下面是我想要完成的示例(与上述差异相同的输出,但仅显示围绕更改的 1 行上下文):

+01: def renamed_function() -01: def original_function(): 02: +03: """ Neat stuff here """ 04: 21: +22: # Here's a new comment 23: 85: # Output the value of foo() +86: print "Foo is %s"%(foo()) -86: print foo() 87:

0 投票
1 回答
1277 浏览

python - 使用 WordNet 比较两个短语?

我正在尝试比较两个短语的语义。在 Python 中,我使用 nltk 和 difflib。首先,我从短语中删除停用词,然后使用 WordNetLemmatizer 和 PorterStemmer 对单词进行规范化,然后将其余部分与 difflib 的 SequenceMatcher 进行比较。我仍然认为有比使用 difflib 更好的方法。有什么建议或提议吗?在短语之间的比较中是否有任何使用 Wordnet 的库?我正在做的步骤是否正确?

0 投票
1 回答
3242 浏览

python - TypeError: 'float' 类型的对象没有 len() , difflib

我有一个函数使用字典中键的值。该值是一个列表,我遍历该列表以将其与我的示例字符串进行比较。

distance是一个函数,它在输入 4 个浮点值 l1、l2、l3、l4 时返回一个浮点值。这不是问题。问题出在difflib.SequenceMatcher(None, str1, item).ratio().

这是错误:

Str1 是一个字符串,我将它与item. 请注意,这item是一个字符串列表。根据文档,difflib 参数需要是可散列的并且item没有唯一的散列值。我怎么可能避免这种情况?

0 投票
1 回答
293 浏览

python - 方法 set_seq1 和 set_seq2 的工作,difflib python

我检查了 difflib 的文档,我对difflib.SequenceMatcher.ratio()实际工作方式感到困惑。考虑一下:

s = 0.9411764705882353
我想知道它是如何计算的。通过实际查看一个字符串与其他字符串的偏差来比较 2 个字符串。对于 2 个字符串ab文档说:

差异被计算为“我们需要对'a'做什么才能将其更改为'b'?”

还有类似的东西:

对于 b 中的 x,b2j[x] 是 x 出现的索引列表(进入 b);垃圾元素不出现

请解释上面的s示例。

0 投票
1 回答
170 浏览

python - 使用difflib在python中搜索单词字典的有效数据结构?

我正在尝试编写一个拼写检查器,我想使用 difflib 来实现它。基本上,我有一个技术术语列表,我添加到标准 unix 字典 ( /usr/share/dict/words) 中,并将其存储在一个名为 dictionaryFile.py 的文件中。

我有另一个名为 stringSim.py 的脚本,我在其中导入字典并针对它测试示例字符串。这是基本代码:

它返回以下内容:

我想知道是否有更好的策略可以用来查找类似的匹配项(假设单词拼写错误)。这是针对 Web 应用程序的,因此我正在尝试优化这部分代码,使其更加简洁。有没有更好的方法可以构造 wordList 变量(现在它只是一个单词列表)?

谢谢。

0 投票
1 回答
1292 浏览

python - 序列匹配器比率()

我打算用来SequenceMatcher(...).ratio()检查两个字符串是否相似。但是,我的快速测试返回了我没想到的结果(这对我的目的不起作用):

具有相同错误数的较长字符串应该具有相等或更低的比率,对吗?

0 投票
1 回答
191 浏览

python - Python 数据框

我有一个数据框(df)并尝试将数据附加到特定行

Index Fruit Rank 0 banana 1 1 apple 2 2 mango 3 3 Melon 4

目标是将等级 1 的水果与每个等级进行比较,然后附加该值。我正在使用 difflib.SequenceMatcher 进行比较。现在我可以附加到 df 但我最终将相同的值附加到每一行。我正在为循环和追加而苦苦挣扎。任何指针将不胜感激。

这是我的一些代码:

结果是这样的:

Index Fruit Rank similarity_score 0 banana 1 0.3 1 apple 2 0.3 2 mango 3 0.3 3 Melon 4 0.3

期望的结果是:

Index Fruit Rank similarity_score 0 banana 1 n/a 1 apple 2 0.4 2 mango 3 0.5 3 Melon 4 0.6

谢谢。