我正在尝试将用 PHP 编写的 lib 重写为 python。它处理所有 sphinx 请求。在初始化函数中,我试图设置默认的搜索和匹配模式,但我遇到了一个小问题。我从配置文件中获取模式。
在 PHP 中,您需要使用常量作为输入:
$this->sphinx->SetMatchMode(constant($this->conf['match_mode']));
这会将配置文件中的字符串转换为常量,一切正常。当我尝试这样做时,棘手的部分从 python 开始:
self.sphinx.SetMatchMode(self.config['match_mode'])
我得到:
AssertionError in
assert(mode in [SPH_MATCH_ALL, SPH_MATCH_ANY, SPH_MATCH_PHRASE, SPH_MATCH_BOOLEAN, SPH_MATCH_EXTENDED, SPH_MATCH_FULLSCAN, SPH_MATCH_EXTENDED2])
在这种情况下,输入应该是一个整数,但输入是一个字符串,我无法转换它,因为我得到一个异常 - 字符串是SPH_MATCH_ALL
.
invalid literal for int() with base 10: 'SPH_MATCH_ALL'
当我尝试这个时:
print type(self.config['match_mode']) # -- string
print type(SPH_MATCH_ALL) # -- integer
print SPH_MATCH_ALL # -- 1
print SPH_MATCH_ANY # -- 0
所以我的问题是,如何将字符串转换为整数或它认为的任何内容,所以我不会收到断言错误。当然,我可以只做一些 if/else 语句,但我不想那样做。有什么优雅的方法可以做到这一点吗?