在Python中使用正则表达式进行模糊匹配 - 为什么这么慢?

时间:2016-01-22 19:44:00

标签: python regex matching

我正在尝试从两个不同的.csv文件中模糊匹配列。这是脚本:

import regex
import pandas as pd

df1 = pd.read_csv('messy.csv', header = None)
df2 = pd.read_csv('correct.csv', header = None)

df1_1 = df1[3]
df2_2 = df2[0]

for x in df1_1:
    r = r"(?:%s){2i+2d+1s<=%s}" %(x, int(len(x)*.2))
    f = lambda y : bool(regex.match(r, y, regex.IGNORECASE))
    mask = df2_2.apply(f)
    results = [x, df2_2[mask].values]
    print(results)

在匹配两列之后,Python根据我定义的错误返回一些建议,即{2i + 2d + 1s&lt; =%s}。在某些情况下,有太多的建议。有没有办法限制它们(除了调整错误术语)?

有时候正则表达式似乎不是很准确。是否有类似的模糊匹配两个字符串的方法?我已经尝试过fuzzywuzzy。这太棒了,但速度非常慢(这就是我首先改用正则表达式的原因)。

谢谢!也欢迎对代码发表评论!

0 个答案:

没有答案