一、需求角度

1.使用情景

多组(大量,成百上千条)数据的情况下,给单个数据某一属性的非结构化录入值(尤其是文本信息,如地址等)以相应的关键词打上标签,便于后续的数据透视或相关处理。

python 列表模糊匹配 python模糊匹配函数_python模糊匹配

2.使用人群

像我一样喜欢偷懒的人。

3.需求

1)核心需求是——对于所有元素的某一属性,提取关键词并以此关键词为标签给该元素打上标签。

这一需求对于常见的结构化录入值包含的某些信息进行处理是非常容易的,可以直接使用Excel的分列工具,固定宽度即可轻松解决。

python 列表模糊匹配 python模糊匹配函数_要匹配的标签和内容_02

但是对于非结构化的录入值(尤其是文本信息,如地址等),由于宽度不固定,简单分列虽然比人工一个个标记要快,但是仍无法直接满足需求。因此这里可以引发出几种解决思路:

第一种是利用非结构化数据所具有的一定的结构化特征,分别按照“省、市、区”进行多次分列,直到分出需要的区域,然后再对整个分列后的数据进行整合与处理,实现关键词提取的功能;第二种是使用Excel的内置函数vlookup的模糊匹配模式,先设置好标签,然后进行模糊匹配即可,但是这种模糊匹配的方式并不太准确;第三种是结合正则匹配的思想,使用正则表达式进行匹配,结合Excel自带的编码窗口VBA,编写相应程序进行功能实现;第四种则是通过Python等外部程序语言,打开Excel、读取数据并在Excel外部处理后再写入Excel中,类似于第三种方法。本工具采用了第三种方法,利用VBA编写相应程序实现功能,具体的细节这里不做过多展开。

python 列表模糊匹配 python模糊匹配函数_python 列表模糊匹配_03

2)方便、快捷、省力

解放双手:逃离“选定单元格—人工提取关键词—键盘输出”的循环模式,让双手不再酸痛。

解放双眼:让双眼不再时刻盯着屏幕,可以得到休息。

3)省时间

把方法教给用户,把时间还给用户。考虑理想的极端情况,人工条件下1s完成1条数据的处理,900条数据则需要15min,如果能在数秒钟之内完成,可以节省相当多的时间用于其他工作,并且省掉了15min背后需要付出的劳累。

二、产品角度

1.定位

傻瓜式效率提升小工具

傻瓜式——要求使用操作简单,不需要额外精力学习如何使用。

效率提升——快速实现功能,节省时间与精力。

2.产品设计

整个产品包含了代码部分与交互部分(操作部分以及结果展示部分)。

1)代码部分:

核心功能实现+控制功能。满足使用需求,涉及技术问题,此处略过不谈。

2)交互部分:

交互部分涉及到两个问题,如何让用户能够简单地使用,以及如何向用户简洁地展示结果。简洁地展示结果比较容易,因为结果是提取关键词,因此在目标列的右侧插入一列并写入结果即可。当然,由于数据行数过多,为了让用户更直观地知道什么时候能够完成匹配,加入了提示框在匹配完成时进行提示。而让用户能够简单地使用,考虑了两种方式,一是快捷键,二是按钮。两者相较而言选择了按钮的方式,一方面能够提醒用户有这样一个功能,另一方面也能够降低用户的记忆负担,在工具由一个用户传递到另一个用户时,不必告诉他需要什么快捷键才能使用,也不必让他在许久之后再度使用时需要回想快捷键的相关内容,使工具便于迁移与扩散。

三、需求洞察总结

基本上满足了主要的匹配需求以及省时省力、方便快捷的需求。当然也存在一定的问题,例如需要保存为xlsm格式,移动端无法正常使用该功能;将功能从一个表格迁移到另一个表格需要复制代码并粘贴到目标表格的编码窗口,对于不熟悉的用户可能在使用时找不到入口,具有一定的门槛;更换匹配标签需要在代码中修改,封装性较差。同时为了能够实现更广泛的匹配功能,在设计时使用了更加灵活的写法,可以选择任意列作为目标列,在标签作相应调整的情况下理论上可以满足更多的匹配需求,而不仅仅局限于地址匹配。相信在未来有更加多样和更加明确的需求的情况下,这一工具能够具有更完善的功能从而满足更广泛的需求。