You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取模糊匹配结果的位置区间(类似正则匹配的span方法)

Python模糊匹配同时获取得分和位置方案

你常用的RapidFuzz库本身就原生支持该需求,不需要额外引入其他依赖。

核心实现方法

RapidFuzz提供了partial_ratio_alignment函数,是partial_ratio的对齐增强版本,除了返回和partial_ratio完全一致的匹配得分外,还会返回长短文本的对齐位置信息,效果等价于正则匹配的span方法返回结果。

示例代码

首先安装依赖:
pip install rapidfuzz
运行测试:

from rapidfuzz.fuzz import partial_ratio_alignment

# 测试用长文本、待匹配短文本
long_content = "2024年最新活动通知:本周末线下技术沙龙将在科技园B座举办,欢迎报名参与"
short_query = "技术沙陇将在科技园" # 故意设置错别字模拟模糊匹配场景

match_result = partial_ratio_alignment(short_query, long_content)

# 核心返回字段说明
# - score: 模糊匹配得分,和partial_ratio返回结果完全一致
# - dest_start: 长文本中匹配片段的起始索引(左闭)
# - dest_end: 长文本中匹配片段的结束索引(右开)

# 直接获取等价于span的返回结果
match_span = (match_result.dest_start, match_result.dest_end)
print(f"匹配位置:{match_span}")
print(f"匹配到的文本片段:{long_content[match_span[0]:match_span[1]]}")

补充说明

  • 如果你还在使用fuzzywuzzy,该库没有原生支持返回位置的函数,需要自行基于编辑距离对齐逻辑二次开发,成本较高,更推荐直接迁移到性能更强的RapidFuzz使用现成功能。
  • 如果需要批量匹配多个查询词,可以先用RapidFuzz的process模块的extract系列函数过滤达到得分阈值的结果,再对每个命中结果调用partial_ratio_alignment获取具体位置即可。
  • 返回的dest_start和dest_end是左闭右开的索引区间,和Python字符串切片、正则span方法的返回格式完全兼容,可以直接替换使用。

内容的提问来源于stack exchange,提问作者Peter Franek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:15:04