Python - как добавить литерал unicode к переменной?
Я видел несколько примеров:
for name in os.listdir(u'somedir') :
моя проблема в том, что я получаю somedir как переменную, так как я могу добавить литерал 'u'?
что-то вроде
for name in ops.listdir(u+somedir)
?
Ответ 1
Если источник somedir не указывает его как строку Unicode (isinstance(somedir, unicode) - False), вы должны декодировать его, предоставив соответствующую кодировку символов (это зависит от того, откуда берутся байты):
unicode_somedir = somedir.decode(encoding)
Ответ 2
Учитывая исходную строку байта, вы можете преобразовать ее в объект unicode (Python 2.x) или объект str (Python 3.x), расшифровав его:
for name in ops.listdir(somedir.decode("utf-8")):
Используйте любую кодировку, в которой закодирована строка байта вместо "utf-8". Если вы опустите кодировку, будет использоваться стандартное кодирование Python (ascii в 2.x, utf-8 в 3.x).
Смотрите Unicode HOWTO (3.x) для получения дополнительной информации.