问题标签 [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 回答
192 浏览

python - 如果存在差异,则获取具有相同 id 的项目的最小最大值?

我有两个看起来像这样的文件,它们之间存在一些差异:

第一个文件:

第二个文件:

我使用 difflib 比较它们并打印出它们之间存在差异的行。我想要做的是打印出frame共享相同的最小值和最大值id

框架是每一行的关键,因此在这种情况下,框架的范围从1626。id 是每个 4 个值列表之前的值。所以第一行的 id 是3. 第二行有两个 id,分别是2和 then 3

所以我想写的一个例子是:

鉴于frames共享 id3的文件之一与我正在比较的文件不同。

对于这样的每一个差异,我需要写出一个只包含开始帧和结束帧的新文件,然后我将处理将额外的字符串连接到每个文件。

这是当前的 difflib 用法,它打印出具有不同的每一行:

我如何能够通过调整这个执行块来实现我上面描述的内容?

请注意,这两个文件共享相同的frameammount 但不相同id的 s 所以我需要为每个差异写入两个不同的文件,可能写入一个文件夹。因此,如果这两个文件有 20 个差异,我需要为每个原始文件创建两个主文件夹,每个原始文件包含frame相同 ID 的每个开始和结束的文本文件。

0 投票
2 回答
1244 浏览

python - 比较两个多列 csv 文件

[使用Python3]我想比较两个csv文件的内容,如果内容相同就让脚本打印。换句话说,它应该让我知道是否所有行都匹配,如果不匹配,则不匹配的行数。

此外,我希望以后可以灵活地更改代码以将所有与另一个文件不匹配的行写入。

此外,虽然这两个文件在技术上应该包含完全相同的内容,但行的顺序可能不同(第一行除外,它包含标题)。

输入文件如下所示:

我目前正在运行的代码如下(如下),但老实说,我不确定这是否是最好的(最 Python 的)方式。另外我不确定try: while 1: ...代码在做什么。这段代码是我搜索论坛和 python 文档的结果。到目前为止,代码运行了很长时间。

由于我是新手,我非常渴望收到有关代码的任何反馈,并且还希望对您可能提出的任何建议进行解释。

代码:

编辑: 该文件可以包含重复项,因此存储在一个集合中将不起作用(因为它会删除所有重复项,对吗?)。

0 投票
1 回答
668 浏览

python - python的difflib.find_longest_match是如何实现的?

最初想要一个算法来找到两个 python 字符串之间的最长子字符串。最佳运行时的一般答案是“构建后缀树”,基于线性运行时的在线共识。然而,网上关于这方面的例子为零,这并不奇怪,因为后缀树被认为是非常复杂和不直观的构造。

我实现了一个 DP 解决方案(它仍然是二次的)并且对于我正在尝试做的事情来说太慢了。

尝试使用 python 的 difflib.find_longest_match,它更快(但它仍然不如 id 那样快)。

所以如果有人知道, find_longest_match() 方法使用什么算法?

另外,如果 find_longest_match() 的算法不是最优的,有谁知道哪里可以找到线性最大子串算法是如何实现的。这是一个有点著名的问题,奇怪的是在线上的最优解决方案如此之少甚至没有。或者我可能只是被误导了,下限是二次的,甚至是 nlogn。

谢谢。

0 投票
1 回答
280 浏览

python - python用for循环在字典中追加项目

我正在编写一个嵌套的 for 循环来判断两个单词的发音是否相似。我的代码如下:

结果应该是一个名为 wordsDict 的字典。例如键“university”将具有值“anniversary”,因为它们的音素相似(sm.ratio 为 0.66666,大于 0.6),但是当输入为“university”和“good”时,“good”将也可以附加到一个关键的“大学”,但实际上“大学”和“好”的相似度是0.0,小于0.6。看来我的“if”控制语句失败了。如何使“if”语句起作用?

0 投票
2 回答
5262 浏览

python - 如何按最佳匹配(difflib 比率)对字符串列表进行排序

可以说我正在构建一个基本的搜索引擎。我有一个字符串列表作为搜索结果,我想对搜索结果列表进行排序,其中最匹配的结果位于顶部。

我当前的代码如下所示(以命名参数为例)

我不知道那ratio之后该怎么办。我知道我必须按 对列表进行排序ratio,但我该怎么做呢?

0 投票
2 回答
481 浏览

python - 使用 Difflib 从字符串列表中删除几乎重复的字符串

我正在使用python和mysql。这是我的代码

现在 Product_type_list 是描述 product_type 的字符串列表,如下所示

在 product_type_list 中,T 恤有 3 个重复条目,每条牛仔裤和衬衫有 2 个重复条目。

现在我希望我的 Product_type_list 是这样的

我认为我们可以使用 Difflib.Sequencematcher 的 quickratio。但是如何做到这一点

0 投票
0 回答
2701 浏览

python - 忽略python diff中的空格

是否有一种优雅的方法可以忽略 python 中差异中的空格(使用 difflib 或任何其他模块)?也许我错过了一些东西,但我已经搜索了文档,并且无法在 difflib 中找到任何明确的支持。

我目前的解决方案是将我的文本分解成单词列表,然后区分它们:

这样做的缺点是,如果想要逐行报告而不是逐字报告,则必须将 diff 的输出与原始文件文本合并。这很容易实现,但有点不方便。

0 投票
1 回答
2242 浏览

python - Difflib 的 SequenceMatcher - 自定义相等

我一直在尝试使用 SequenceMatcher 创建嵌套或递归效果。

最终目标是比较两个序列,它们都可能包含不同类型的实例。

例如,序列可以是:

通常,SequenceMatcher 只会将 [1] 识别为 l1 和 l2 的公共子序列。

我希望 SequnceMatcher 对 string instances 应用两次,以便"Foo"and 和 and"Fo"被认为是相等的,"Bar"并且"Bak"最长的公共子序列的长度为 3 [1, Foo/Fo, Bar/Bak]。也就是说,我希望 SequenceMatcher在比较 string members 时更加宽容

我尝试做的是为内置 str 类编写一个包装器:

编辑:也许更优雅的方式是:

通过这样做,以下是可能的:

所以,显然它正在工作,但我对覆盖散列函数有一种不好的感觉。什么时候使用哈希?它还能从哪里回来咬我?

SequenceMatcher 的文档说明如下:

这是一个灵活的类,用于比较任何类型的序列对,只要序列元素是可散列的。

根据定义,可散列元素需要满足以下要求:

比较相等的可散列对象必须具有相同的散列值

另外,我还需要覆盖cmp吗?

我很想听听我想到的其他解决方案。

谢谢。

0 投票
3 回答
666 浏览

python - 如何使用 Django 比较要使用 Markdown 呈现的两个模型?

检查两个帖子版本(原始版本和编辑版本)之间的帖子更改(编辑/添加/删除的文本)的最佳方法是什么?

我正在使用Markdown,所以我不确定使用difflib.HtmlDiff是否是个好主意。我的目标是用绿色背景标记添加的文本,用红色背景标记删除的文本,类似于github所做的。

0 投票
3 回答
2045 浏览

python - 考虑删除获得接近的字符串匹配 - python

有没有办法让 difflib 在字符串匹配中考虑删除?

我已经尝试过,difflib.get_close_matches()但它不考虑近距离匹配输出中长度较短的字符串。例如

输出:

请注意,对于 string ErfreulicherErfreulich尽管距离仅为 -1,但不被视为紧密匹配。