В настоящее время я портирую код Python 2.7 на Python 3, и у меня возникают проблемы с определением наилучшего подхода для обработки строк.
У меня есть скрипты Python, которые имеют следующий импорт:
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
from __future__ import unicode_literals
Теперь, поскольку unicode_literals преобразует все мои строки в скриптах Python 2.7, в моем скрипте появляются такие ошибки:
TypeError: expecting a string or number, unicode found
TypeError: Argument 'key' has incorrect type (expected str, got unicode)
Теперь я могу избавиться от ошибок в Python2.7, просто добавив.encode ('utf-8') для каждой строки.Например:
scanline_node['projection_mode'].setValue("uv")
TypeError: expecting a string or number, unicode found
scanline_node['projection_mode'].setValue("uv".encode('utf-8'))
Моя проблема в том, что, когда я начинаю использовать Python 3, это не сработает, потому что это сделает тип строки байтами.
Мой вопрос заключается в том, чтолучший способ справиться с этим типом проблемы, чтобы мой код работал на Python 2.7 и Python 3?Должен ли я просто использовать встроенный str ()?
Спасибо!
Джаред