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) для получения дополнительной информации.

Ответ 3

Юникода (somedir)

например. используйте встроенную функцию