如何用pandas实现Excel字符串模糊匹配,忽略空格与大小写差异
重写后的实现代码
def find_string_row(toFind, dframe): # 先统一预处理目标字符串,仅需处理一次提升性能 target = toFind.replace(" ", "").lower() max_row = len(dframe) index = 0 while index < max_row: # 遍历当前行所有单元格,逐个预处理后匹配 for cell_val in dframe.iloc[index].values: # 先转字符串避免数字、空值类型报错,再执行和目标一致的预处理规则 processed_val = str(cell_val).replace(" ", "").lower() if processed_val == target: return index # 未匹配到则打印当前行内容,继续下一行 print(dframe.iloc[index].values) index += 1 # 遍历完所有行未找到匹配,可根据需求调整返回值或抛出异常 return -1
改动说明
- 提前对输入的待查找字符串做
replace(" ", "").lower()预处理,避免循环内重复计算提升效率 - 对每行每个单元格的内容,先统一转字符串类型,再执行和目标字符串完全一致的预处理规则,之后再做匹配,符合要求的模糊匹配逻辑,示例中的
"Address 1 23 "和" add ress 12 3"预处理后结果完全一致,可以正常匹配 - 新增了行数边界判断,避免整表无匹配内容时出现索引越界的死循环问题,无匹配时默认返回-1,可根据业务需求调整为抛出异常等处理逻辑
内容的提问来源于stack exchange,提问作者tbrk
相关产品推荐
相关产品推荐

