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

如何加速Python中的模糊正则表达式搜索

优化模糊正则表达式搜索效率的建议请求

需求说明

在存储于testFile文件(每行一个约150字符的字符串)的字符串集合中,对字典d中存储的关键词进行模糊搜索(最多允许4个错配)。字典d的每个值均为包含两个元素的列表,需记录匹配到的是哪个元素。示例字典如下:

d = {"kw1": ["AGCTCGATGTATGGGTATATGATCTTGAC", "GTCAAGATCATATACCCATACATCGAGCT"], "kw2": ["GGTCAGGTCAGTACGGTACGATCGATTTCGA", "TCGAAATCGATCGTACCGTACTGACCTGACC"]} #简化为仅两个关键词

当前实现方式

先将正则表达式编译后存入字典compd,再逐行读取文件,在每行字符串中搜索每个关键词。若某关键词的第一个列表元素匹配成功,则跳过该关键词的第二个元素,但需继续搜索其他关键词。当前实现代码如下:

#!/usr/bin/env python3

import argparse
import regex

parser = argparse.ArgumentParser()
parser.add_argument('file', help='file with strings')
args = parser.parse_args()

#dictionary with keywords
d = {"kw1": ["AGCTCGATGTATGGGTATATGATCTTGAC", "GTCAAGATCATATACCCATACATCGAGCT"],"kw2": ["GGTCAGGTCAGTACGGTACGATCGATTTCGA", "TCGAAATCGATCGTACCGTACTGACCTGACC"]}

#Compile regex (4 mismatches max)
compd = {"kw1": [], "kw2": []}  #to store regex
for k, v in d.items():  #for each keyword
    compd[k].append(regex.compile(r'(?b)(' + v[0] + '){s<=4}')) #compile 1st elt of list 
    compd[k].append(regex.compile(r'(?b)(' + v[1] + '){s<=4}')) #compile second

#Search keywords
with open(args.file) as f:  #open file with strings
    line = f.readline()  #first line/string
    while line:  #go through each line
        for k, v in compd.items():  #for each keyword (ID, regex)
            for val in [v[0], v[1]]:  #for each elt of list
                found = val.search(line)  #regex search
                if found != None:  #if match
                    print("Keyword " + k + " found as " + found[0]) #print match
                    if val == v[0]:   #if 1st elt of list
                        break   #don't search 2nd
        line = f.readline() #next line

测试testFile文件内容如下:

AGCTCGATGTATGGGTATATGATCTTGACAGAGAGA
GTCGTAGCTCGTATTCGATGGCTATTCGCTATATGCTAGCTAT

得到预期结果:

Keyword kw1 found as AGCTCGATGTATGGGTATATGATCTTGAC

效率问题

当前脚本处理500k条字符串和6个关键词需3-4分钟,若处理200万条字符串预计耗时12-16分钟,希望能优化提速。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:50:28