Я пытаюсь переписать мою библиотеку, написанную на PHP, в python.Он обрабатывает все запросы сфинксов.В функции init я пытаюсь установить режим поиска и сопоставления по умолчанию, но столкнулся с небольшой проблемой.Я получаю режимы из файла конфигурации.
В 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, но я этого не хочу.Есть ли какой-нибудь элегантный способ сделать это?