问题标签 [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.
python - 用python推断差异
我正在使用一个库来推断两个 json 文件之间的差异。我的代码将它们加载到字典中,然后使用datadiff来获取两种数据结构之间的差异。问题是我想进一步处理以下输出:
制作两个数据结构中发现的差异的 html。为了做到这一点,我必须处理命令的输出并将其分成几行。然后,如果行以 + 开头,我知道输出必须引用到比较的第二个文件,如果行以 - 开头,那么我必须将其归因于第一个文件。我的代码:
这段代码给我一个 TypeError:
我可以将整个 datadiff.diff 转换为一个字符串,但随后我必须以某种方式拆分它以获取所有行,因为它被转换为单行字符串:
数据差异输出:
python - difflib 有哪些更强大的替代方案?
我正在编写需要能够跟踪修订的脚本。一般的想法是给它一个元组列表,其中第一个条目是字段的名称(即“标题”或“描述”等),第二个条目是该字段的第一个版本,第三个条目是修订版。所以是这样的:
现在,使用python docx
我希望我的脚本创建一个 word 文件,该文件将显示原始版本,以及带有粗体更改的新版本。例子:
原标题:
这是标题的第一个版本
修改后的标题:
这是标题的第二个版本
这样做的方法python docx
是创建一个元组列表,其中第一个条目是文本,第二个是格式。所以创建修改后的标题的方法是这样的:
最近发现difflib
,我认为这将是一项非常容易的任务。事实上,对于简单的单词替换,例如上面的示例,它是,并且可以使用以下函数来完成:
当我想做其他事情时,问题就来了。例如,将“teh”更改为“the”会产生h (没有空格,我无法弄清楚格式)。另一个问题是附加到末尾的额外文本不显示为更改(或根本不显示)。
所以,我对你们所有人的问题是,有哪些替代方案difflib
足以处理更复杂的文本比较,或者,我怎样才能difflib
更好地使用它来满足我的需求?提前致谢
python - python difflib比较输出格式
使用 difflib.compare 和 python 来比较两个文本文件。我知道比较本质上返回一个字符串列表。当字符串对于第一个文本文件是唯一的时,它会在字符串之前放置一个“-”,当字符串对于第二个文本文件是唯一的时,它会在字符串之前放置一个“+”。
我的问题是我正在尝试编写一些代码来确定要保留哪个字符串。我目前开始在每个字符串中寻找“-”,如果找到它,我会执行一些逻辑来确定我是否要使用该字符串。如果我不打算使用它,那么我要么往下看一两行“+”。
在我的几乎所有情况下,“-”行都在“+”行之前。但现在我得到了“+”行在“-”行之前的实例。这是抛弃我的代码,因为它找不到正确的行来写入输出文本文件。有谁知道字符串如何写入数组背后的逻辑是基于哪个行号先出现?
python - 具有两个以上文件名的 difflib
我有几个要比较的文件名。这里有些例子:
我需要做的是从每个文件名中提取“FilePrefix”,这取决于目录。我有几个包含许多 jpg 的文件夹。在每个文件夹中,每个 jpg 都有一个与该目录中的每个其他 jpg 相同的 FilePrefix。我需要 jpg 文件名的可变部分。我无法提前预测 FilePrefix 将是什么。
我的想法是使用 difflib(在 Python 中)比较两个文件名并以这种方式提取 FilePrefix(以及随后的变量部分)。我遇到了以下问题:
如您所见,第一个size
不匹配。它混淆了十位和数字的位置,使我很难匹配两个以上文件之间的差异。是否有正确的方法size
在目录中的所有文件中找到最小值?或者,是否有更好的方法来提取 FilePrefix?
谢谢你。
python - Python:在 difflib 中传递 SequenceMatcher 一个“autojunk=False”标志会产生错误
我正在尝试使用 Python 的 difflib 包中的 SequenceMatcher 方法来识别字符串相似性。不过,我遇到了这种方法的奇怪行为,我相信我的问题可能与包的“垃圾”过滤器有关,这里有详细描述的问题。我只想说我认为我可以通过difflib 文档中描述的方式将 autojunk 标志传递给我的 SequenceMatcher 来解决我的问题:
但这会产生以下错误消息:
有谁知道我如何将 autojunk=False 标志传递给 SequenceMatcher?对于其他人可以提供的任何建议,我将不胜感激。
python - 比较python difflib中的两个文本
各种各样的谜语……。我有两个类似的文本文件,其中包含我下载的数据的文件路径和另一个我想作为自动定期过程的一部分下载的数据的文件路径。但是,我只想下载新文件(文本 2 中包含的 3 个文件集,文本 1 中不存在)。有没有办法在 python 中使用 difflib 比较和有效区分两个文本,从而产生仅包含合并差异的第三个文本?非常感谢提前。大通CB
////////文本1///旧///
/用户/MacBookPro15/1.txt
/用户/MacBookPro15/2.txt
/用户/MacBookPro15/3.txt
////文本2//////新建///
/用户/MacBookPro15/1.txt
/用户/MacBookPro15/2.txt
/用户/MacBookPro15/3.txt
/用户/MacBookPro15/4.txt
/用户/MacBookPro15/5.txt
/用户/MacBookPro15/6.txt
///我想要的////有区别的
/用户/MacBookPro15/4.txt
/用户/MacBookPro15/5.txt
/用户/MacBookPro15/6.txt
python - 2个熊猫数据框列之间的矢量化/矩阵计算
我正在使用 difflib 比率来计算 2 个字符串之间的相似性:
输出是从 0-1 的单个浮点值,可以解释为匹配分数。
我要做的是创建一个列,其中包含基于max(ratio)
值和其他值列表之间的最佳匹配。
因此,如果:
和:
df.bestmatch
'maria', 'fred' and 'john'
将包含基于df2.col1
值的最佳匹配。
我觉得使用该.apply
方法可以做到这一点,但我无法理解如何计算df.col1
反对中的每个值df2.col1
。
更新: difflib.get_close_matches 方法能够更好地处理大型数组,并给了我想要的一切,除了比率分数(没什么大不了的)。下面汤姆的回答适用于较小的数据集,但当每列约为 19,000 个值时会出现 MemoryError。
python - 更好的模糊匹配性能?
我目前正在使用方法 get_close_matches 来自difflib的方法来遍历 15,000 个字符串的列表,以获得与另一个大约 15,000 个字符串列表的最接近匹配:
每个值需要 0.58 秒,这意味着完成循环需要 8,714 秒或 145 分钟。是否有另一种可能更快的库/方法或提高此方法速度的方法?我已经尝试将两个数组都转换为小写,但这只会导致速度略有提高。
python - difflib.get_close_matches() - 帮助获得想要的结果
该程序的基本要点是从员工姓名列表开始,然后对其进行排序。等待用户输入“end”以停止填充名称列表(我有 100 个名称,我将其缩短为示例)。之后,用户可以输入员工姓名,程序将运行 difflib.get_close_matches()。
这是问题;我收到 get_close_matches 的语法错误。我应该如何以不同的方式进入 difflib?还; 如果您有任何使代码更高效的提示,请同时说明它如何以及为什么更高效。我对 Python 相当缺乏经验,所以要温柔,嗯?
示例代码:
python - 如果第一个答案不正确,difflib.get_close_matches 会在列表中抛出名称
这是我以前的问题here的更新版本。我正在添加到代码中,如果 get_close_matches 名称不是他们想要的人的姓名,则丢弃最接近的匹配并重新运行该函数并获取第二个最接近的匹配(现在首先,因为该函数会抛出出第一场比赛)。
你对如何写得更好有什么意见吗?和工作。>.>
这是我到目前为止所拥有的:
列表中的名称用完时出错:
我理解这意味着由于名称列表中没有更多名称可以将它们全部删除,因此全局变量“userAnswer”是未定义的。