gpt4 book ai didi

Python正则表达式模块模糊匹配: substitution count not as expected

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:49 24 4
gpt4 key购买 nike

背景

Python 模块 regex允许模糊匹配。

您可以指定允许的替换数 (s)、插入数 (i)、删除数 (d) 和总错误数 (e)。

匹配结果的 fuzzy_counts 属性返回一个元组 (0,0,0),其中:

match.fuzzy_counts[0] = count for 's' 
match.fuzzy_counts[1] = count for 'i'
match.fuzzy_counts[2] = count for 'd'

问题

删除和插入按预期计算,但不计算替换。

在下面的示例中,唯一的变化是查询中删除了一个字符,但替换计数为 6(如果删除 BESTMATCH 选项则为 7)。

如何计算替换数?

如果有人能向我解释这是如何工作的,我将不胜感激。

>>> import regex
>>> reference = "(TATGGGA[CT][GC]AAAG[CT]CT[AC]AA[GA]CCATGTG){s<7,i<3,d<3,e<8}"
>>> query = "TATGGACCAAAGTCTCAAGCCATGTG"
>>> match = regex.search(reference, query, regex.BESTMATCH)
>>> print(match.fuzzy_counts)
(6,0,1)

最佳答案

这个问题似乎与允许的错误设置中的值有关。

将 s 减少到 s < 3 会向下更改模糊匹配元组得分:

>>> reference = "(TATGGGA[CT][GC]AAAG[CT]CT[AC]AA[GA]CCATGTG){s<3,i<3,d<3,e<4}" 
>>> query = "TATGGACCAAAGTCTCAAGCCATGTG"
>>> match = regex.search(reference, query, regex.BESTMATCH)
>>> print(match.fuzzy_counts)
(1,0,1)

进一步减少 's' 的允许错误会返回此匹配项的预期 's' 分数:

>>> reference = "(TATGGGA[CT][GC]AAAG[CT]CT[AC]AA[GA]CCATGTG){s<2,i<3,d<3,e<4}"
>>> query = "TATGGACCAAAGTCTCAAGCCATGTG"
>>> match = regex.search(reference, query, regex.BESTMATCH)
>>> print(match.fuzzy_counts)
(0,0,1)

为什么它会这样,对我来说仍然是个谜。

关于Python正则表达式模块模糊匹配: substitution count not as expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31193749/

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