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

如何查找文件中允许1个错配的单词匹配对

解决方案

核心逻辑基于汉明距离(Hamming Distance) 实现匹配,仅对长度相同的序列统计相同位置的错配数量,错配数≤1的序列会被判定为匹配,长度不同的序列会直接排除,避免出现你提到的无效匹配问题。

实现代码(Python)

def hamming_distance(s1, s2):
    # 长度不同直接返回大于1的数值,排除匹配
    if len(s1) != len(s2):
        return 2
    return sum(c1 != c2 for c1, c2 in zip(s1, s2))

if __name__ == "__main__":
    # 读取序列文件,可自行替换为你的文件路径
    with open("input.txt", "r", encoding="utf-8") as f:
        sequences = [line.strip() for line in f if line.strip()]
    
    # 生成匹配结果
    match_result = {}
    for query_seq in sequences:
        matched_seqs = []
        for target_seq in sequences:
            if hamming_distance(query_seq, target_seq) <= 1:
                matched_seqs.append(target_seq)
        match_result[query_seq] = matched_seqs
    
    # 格式化输出
    for seq, matches in match_result.items():
        print(f"{seq}: {', '.join(matches)}")

运行效果验证

你的示例输入:

CTAGGA
TTAGCT
CGTACA
ACAGTG
ACACTG

运行代码后输出结果和你的预期完全一致:

CTAGGA: CTAGGA
TTAGCT: TTAGCT
CGTACA: CGTACA
ACAGTG: ACAGTG, ACACTG
ACACTG: ACAGTG, ACACTG

如果需要处理带冗余字符的序列,可在读取序列后先统一裁剪为相同长度再进行距离计算即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:36:10