gpt4 book ai didi

python - 如何使用 difflib.SequenceMatcher 获得多个匹配项?

转载 作者:太空狗 更新时间:2023-10-30 03:00:34 29 4
gpt4 key购买 nike

我正在使用 difflib 来识别较长序列中短字符串的所有匹配项。然而,当有多个匹配项时,difflib 似乎只返回一个:

> sm = difflib.SequenceMatcher(None, a='ACT', b='ACTGACT')
> sm.get_matching_blocks()
[Match(a=0, b=0, size=3), Match(a=3, b=7, size=0)]

我期望的输出是:

[Match(a=0, b=0, size=3), Match(a=0, b=4, size=3), Match(a=3, b=7, size=0)]

事实上,字符串 ACTGACT 包含 ACT 的两个匹配项,位于位置 0 和 4,大小均为 3(加上字符串末尾的另一个大小为 0 的匹配项)。

如何获得多个匹配项?我期待 difflib 返回两个位置。

最佳答案

为什么要为此使用 difflib?您应该能够只使用标准的正则表达式。

import re
pattern = "ACT"
text = "ACTGACT"
matches = [m.span() for m in re.finditer(pattern, text)]

这会给你:

[(0, 3), (4, 7)]

或者这是否出于某种原因不包含您感兴趣的信息?它当然不会返回 difflib 返回的最后一个空匹配项,但您可以轻松地创建它。

关于python - 如何使用 difflib.SequenceMatcher 获得多个匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28716510/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com