Поскольку six.text_type
является просто ссылкой на тип str
или unicode
, эквивалентная функция будет такой:
def convert_to_unicode(text):
return six.text_type(text, encoding='utf8', errors='ignore')
Но в угловых случаях она не ведет себя одинаковонапримерон просто с радостью преобразует целое число, поэтому сначала вам нужно будет поставить несколько проверок.
Кроме того, я не понимаю, почему вы захотите получить errors='ignore'
. Вы говорите, что принимаете UTF-8. Но если это предположение нарушается, вы молча удаляете данные. Я настоятельно рекомендую использовать errors='strict'
.
EDIT:
Я только что понял, что это не сработает, если text
уже то, что вы хотите. Кроме того, он с радостью вызывает ошибку TypeError для любого нестрокового ввода. Так как насчет этого:
def convert_to_unicode(text):
if isinstance(text, six.text_type):
return text
return six.text_type(text, encoding='utf8', errors='ignore')
Единственный раскрытый здесь угловой случай - это версия Python, в которой нет ни 2, ни 3. И я все еще думаю, что вы должны использовать errors='strict'
.