背景:针对跨境电商产品,要对英文标题中的某个词或组合词进行精准匹配,将匹配成功的产品进行删除
需要注意的是,这个词或组合词必须是在标题中独立存在的才算匹配成功,不能是某个词的组成部分
所以这里的重点是精准匹配,否则会误删其他不需要产品,所以关于如何精准匹配,这里写下我的思路
一个词在标题中无非就三个位置:开头、中间、结尾
因为英文标题中的每个单词之间是使用空格进行分隔的,所以针对这三个位置逐一进行匹配即可,这里采用正则库re
代码如下:
import re
def pattern_word(search_word, en_title):
"""
params:search_word, str, 需要匹配的词
params:en_title, str, 被匹配的英文标题
return:pattern_result, bool, 匹配结果
"""
r1 = re.findall(f'^{search_word}$', en_title)
r2 = re.findall(f'^{search_word} ', en_title) # 词是否在标题开头位置
r3 = re.findall(f' {search_word}$', en_title) # 词是否在标题末尾位置
r4 = re.findall(f' {search_word} ', en_title) # 词是否在标题中间位置
result = r1 + r2 + r3 + r4
return True if result else False # 无论在哪个位置,如果有成功匹配到,则表示该产品是需要删除的
if __name__ == '__main__':
search_word = 'Analog Digital'
en_title = 'this is a test there are words other word Analog Digitalas'
pattern_result = pattern_word(search_word, en_title)
print(f'搜索词:{search_word}')
print(f'标题:{en_title}')
print(f'匹配结果:{pattern_result}')
以下是测试结果:
- 词在末尾位置
- 词在开头位置
- 标题中虽包含搜索词,但该词并不是独立存在的,而是某个词的部分组成
- 搜索词是由多个词组成的情况
大家觉得怎么样呢?在评论区留下你的疑惑~