有人能解释一下get_matching_blocks()的行为吗?对于下面的示例:
string2 = "1234 abc efg"
string1 = "efg abc 1234"
match = SequenceMatcher(None, string1, string2).get_matching_blocks()
print(match)它返回下面的结果[Match(a=3, b=4, size=5), Match(a=12, b=12, size=0)],这意味着它只找到子序列“abc”
为什么它不返回子序列"1234“和"efg"?
发布于 2017-09-29 21:57:35
According to the documenatation
返回描述匹配子序列的三元组列表。每一个三元组的形式都是(i,j,n),表示ai:i+n == bj:j+n,三元组在i和j中单调递增。
这里的关键词是“单调递增”。这意味着如果返回的列表包含三元组t = (i, j, n)和t' = (i', j', n'),其中t出现在t'之前,那么我们必须有i <= j <= i' <= j'。
发布于 2017-09-29 21:58:34
文档上说:“三元组在i和j中单调递增。”因此,在找到匹配项后,实现永远不会回头看。它会找到"abc“,并且只在其中的每个字符串中进行查找。
https://stackoverflow.com/questions/46490282
复制相似问题