【问题标题】:In Python, how do I search a TinyDB database for substrings in the values?在 Python 中,如何在 TinyDB 数据库中搜索值中的子字符串?
【发布时间】:2015-12-27 01:41:24
【问题描述】:

我为一个项目创建了一个数据库,我希望能够在数据库中搜索值,但比简单的 == 操作更好。例如,如果有人输入“columbia”进行搜索,我希望字典中包含“Columbia University”作为该特定人的“Affiliation”键的值

【问题讨论】:

标签: python string search tinydb


【解决方案1】:

您可以使用正则表达式进行搜索:

>>> db.search(User.name.matches('[aZ]*'))
>>> db.search(User.name.search('b+'))

这些对应于 Python 的 re.matchre.search,后者搜索可能从字符串中任何位置开始的出现。

您也可以像这样使用自定义测试表达式:

>>> test_contains = lambda value, search: search in value
>>> db.search(User.name.test(test_contains, 'Columbia'))

更多详情,请参考relevant section of the TinyDB docs

【讨论】:

  • 您能否详细说明 test_contains 示例?我已经按书面方式尝试过,但最终出现 NameError: name 's' is not defined
  • 感谢@AaronCiuffo 的提示!第二个代码示例是错误的,现在应该修复?
猜你喜欢
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 2021-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多