Не могу разобрать шаблон вложенной строки - PullRequest
0 голосов
/ 24 января 2020

Я использовал pymon go для анализа запроса mon go, у меня была функция, которая принимает несколько переменных, которые разбираются в запрос mon go. Я получил ошибку TypeError: expected string or bytes-like object в методе safe_substitute шаблона.

from string import Template
from bson.objectid import ObjectId

template = Template({"${key}":{"${condition}": ObjectId("${value}") }})
mongo_filter = template.safe_substitute(key=key, condition='${}'.format(condition), value=value)

1 Ответ

1 голос
/ 24 января 2020

На основе шаблонной документации метод safe_substitute принимает только строковый или байтовоподобный объект . В вашем случае вы передаете ObjectId, который не соответствует допустимым типам.

Следовательно, вы не можете использовать python Шаблонный метод с вашим ObjectId.

Однако вы можете анализировать переменные во вложенный объект в одну переменную без использования какой-либо библиотеки.

Решение

nestedObject = {
  key: {
    condition: ObjectId(value)
  }
}

, где key, condition , value - переменные для разбора на вложенный объект.

...