我正在尝试为一段python编写一个小补丁,根据对象列表检查提供的字符串,如果对象标题字段与提供的字符串匹配,则返回匹配的字符串。
代码使用filter函数执行此操作,并传递一个简单的测试用于查找匹配项。
我想改变过滤器测试,现在忽略标点符号。
我从这个原始代码开始:
res = (self._db_list(session).movies.filter(func.lower(MovieListMovie.title) == name.lower())
.filter(MovieListMovie.year == year).first())
if res:
log.debug('found movie %s', res)
return res
基本上,它使用提供的'name'和'year'字符串,并查看'movies'列表中的任何'movie'对象是否具有匹配的title和year属性。如果是这样,它会返回它。
并尝试将其修改为:
nameWithoutPunctuation = name.translate(None,string.punctuation)
res = (self._db_list(session).movies.filter(func.lower(MovieListMovie.title).translate(None, string.punctuation) == nameWithoutPunctuation.lower())
.filter(MovieListMovie.year == year).first())
if res:
log.debug('found movie %s', res)
return res
但我收到一个错误,翻译只接受一个变量,表明我使用不正确。
这是告诉'过滤器'我想忽略标点符号的正确方法吗?我宁愿不尝试拆开“电影”对象,也不要开始摆弄低级功能,因为它们也可以提供其他功能。