在pymongo中搜索时忽略一个特定或任何特殊字符

时间:2018-12-17 20:14:51

标签: python regex mongodb pymongo

所以我的mongodb中有一些产品,下面列出了

  1. 圣诞老人糖果
  2. herleys sweet
  3. 品质甜美

现在,我得到的搜索是小写的,有时可能带有特殊字符或没有特殊字符。那么,如何构建可以准确给出输出的查询?例如,如果用户输入了“ 优质甜食”,则它应与我的mongodb中的“ 优质甜食”相匹配。如果用户在大写字母中输入了“ HERLEYS SWEET ”,则它应与“ herleys sweet ”相匹配(如我的MongoDB中所示)

relu(weight1 * test_input[0] + weight2 * test_input[1] + bias)

我有上面的查询,可以使用大写或小写字母,但是如果用户正在搜索“ herleys-sweet”之类的内容,那么它将无法正常工作。

1 个答案:

答案 0 :(得分:1)

您可以做的一件事是使用re.sub()函数用其他字符代替特殊字符。

你可以有这样的东西:

db.product.find({"Product":re.compile('^' + re.sub('[<list of special characters>]', '<string to replace with>', pr) + '$',re.IGNORECASE)})

例如:

  • 创建特殊字符列表:[\-\_\~\!\\\/\^\$\%]

  • 选择用什么替换特殊字符。可以是空格' '或任何.*

然后,您将:

db.product.find({"Product":re.compile('^' + re.sub('[\-\_\~\!\\\/\^\$\%]', '.*', pr) + '$',re.IGNORECASE)})