我正在尝试从两个不同的.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。这太棒了,但速度非常慢(这就是我首先改用正则表达式的原因)。
谢谢!也欢迎对代码发表评论!