- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Python 中解压 SequenceMatcher
循环结果以便轻松访问和处理值的最佳方法是什么?
from difflib import *
orig = "1234567890"
commented = "123435456353453578901343154"
diff = SequenceMatcher(None, orig, commented)
match_id = []
for block in diff.get_matching_blocks():
match_id.append(block)
print(match_id)
字符串整数代表汉字。
当前迭代代码将匹配结果存储在如下列表中:
match_id
[Match(a=0, b=0, size=4), Match(a=4, b=7, size=2), Match(a=6, b=16, size=4), Match(a=10, b=27, size=0)]
我最终想用 "{{"
和 "}}"
标记注释,如下所示:
"1234{{354}}56{{3534535}}7890{{1343154}}"
这意味着,我有兴趣解压上述 SequenceMatcher
结果,并对特定的 b
和 size
值进行一些计算以生成此序列:
rslt = [[0+4,7],[7+2,16],[16+4,27]]
这是[b[i]+size[i],b[i+1]]
的重复。
最佳答案
SequenceMatcher
结果以生成序列您可以解压缩match_id
,然后对表达式使用列表理解。
a, b, size = zip(*match_id)
# a = (0, 4, 6, 10)
# b = (0, 7, 16, 27)
# size = (4, 2, 4, 0)
rslt = [[b[i] + size[i], b[i+1]] for i in range(len(match_id)-1)]
# rslt = [[4, 7], [9, 16], [20, 27]]
Python 内置函数 zip
的引用:https://docs.python.org/3/library/functions.html#zip
"{{"
和 "}}"
您可以循环遍历 rslt
,然后很好地附加 match-so-far 并标记出注释。
rslt_str = ""
prev_end = 0
for start, end in rslt:
rslt_str += commented[prev_end:start]
if start != end:
rslt_str += "{{%s}}" % commented[start:end]
prev_end = end
# rslt_str = "1234{{354}}56{{3534535}}7890{{1343154}}"
关于python - 解包 SequenceMatcher 循环结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59419950/
我尝试执行以下代码:(在 python 中) from difflib import SequenceMatcher as sm class myint(int): def __cmp__(s
我正在尝试使用 Python 的 SequenceMatcher 查找两个字符串之间的匹配 block 。字符串为 "ABCDPQRUVWXYZ" 和 "PQRABCDUVWXYZ"。但是,当我应用
我试图将一组字符串与一组已定义的字符串进行比较。例如,您想要查找一封信件的收件人,该信件的文本通过 OCR 数字化。 有一个地址数组,其中有字典作为元素。每个元素都是唯一的,包含 ID、姓名、街道、邮
我修补了一个列表,使其看起来像另一个列表: a = [x for x in "qabxcd"] b = [x for x in "abycdf"] c = a[:] s = SequenceMatch
在 Python 中解压 SequenceMatcher 循环结果以便轻松访问和处理值的最佳方法是什么? from difflib import * orig = "1234567890" comme
想知道解决这个特定问题的最佳方法以及是否有任何库(最好是 python,但如果需要我可以灵活处理)。 我有一个文件,每一行都有一个字符串。我想找到最长的常见模式及其在每一行中的位置。我知道我可以使用
import difflib a='abcd' b='ab123' seq=difflib.SequenceMatcher(a=a.lower(),b=b.lower()) seq=difflib.S
我正在寻找一种比较两个字符串的方法。但不是简单的 equals()。我需要一些指标来说明那些与 String 匹配的可能性有多大。因此,例如(值是一个未计算的猜测): 《汽车》和《汽车》重播1.0 “
我想在 Python 中生成文本修订(更具体地说,Markdown 格式的文章)之间的差异。 我想以类似于 Github 的方式格式化此差异 我查看了 difflib 并发现它可以满足我的要求。但是,
我正在做一个项目,它从我存储在 2 个文本文件(nyt.text 和 wapo.text)中的报纸网站获取标题并比较它们相互比较,如果字符串被 Python 内置的 SequenceMatcher 确
我正在使用 difflib 来识别较长序列中短字符串的所有匹配项。然而,当有多个匹配项时,difflib 似乎只返回一个: > sm = difflib.SequenceMatcher(None, a
我一直在尝试使用 SequenceMatcher 创建嵌套或递归效果。 最终目标是比较两个序列,它们都可能包含不同类型的实例。 例如,序列可以是: l1 = [1, "Foo", "Bar", 3]
我对 SequenceMatcher 返回的两个不同答案感到有点困惑取决于参数的顺序。为什么会这样? 例子 SequenceMatcher 不可交换: >>> from difflib import
在 python difflib 库中,SequenceMatcher 类的行为是否异常,或者我误读了假定的行为是什么? 为什么 isjunk 参数在这种情况下似乎没有任何区别? difflib.Se
我在试用 python 的 difflib 模块时遇到了 SequenceMatcher。因此,我尝试了以下示例,但无法理解发生了什么。 >>> SequenceMatcher(None,"abc",
我正在尝试使用 SequenceMatcher.ratio()获取两个字符串的相似度:"86418648"和 "86488648" : >>> SequenceMatcher(None,"864186
我正在使用 difflib 比较两个目录中的文件(连续年份的版本)。首先,我使用 filecmp 查找已更改的文件,然后迭代使用 difflib.SequenceMatcher 比较它们并生成 htm
我试图弄清楚是否有一种方法可以根据 difflib SequenceMatcher 比例对 Pandas 中的字符串进行模糊合并。基本上,我有两个数据框,如下所示: df_a company a
我想使用 difflib.SequenceMatcher 从两个字符串中提取最长的公共(public)子字符串。我不确定我是发现了错误还是误解了 find_longest_match 的文档。这是我感
我正在尝试使用 Difflib.SequenceMatcher 来计算两个文件之间的相似性。这两个文件几乎完全相同,只是一个文件包含一些额外的空格、空行而另一个则没有。我正在尝试使用 s=diffli
我是一名优秀的程序员,十分优秀!