Как добавить Unicode литерал в переменную?

Я видел несколько примеров, подобных этому:

for name in os.listdir(u'somedir') :

моя проблема в том, что я получаю somedir как переменную, так как я могу добавить литерал 'u'?

что-то вроде

for name in ops.listdir(u+somedir)

?

5 ответов

Решение

Если источник somedir не предоставляет его в виде строки Unicode (isinstance(somedir, unicode) имеет значение False), тогда вы должны декодировать его, предоставив соответствующую кодировку символов (это зависит от того, откуда поступают байты):

unicode_somedir = somedir.decode(encoding)

Имея необработанную строку байтов, вы можете преобразовать ее в unicode объект (Python 2.x) или str объект (Python 3.x), расшифровав его:

for name in ops.listdir(somedir.decode("utf-8")):

Используйте любую кодировку, в которой закодирована строка байтов вместо "utf-8", Если вы опустите кодировку, будет использоваться стандартная кодировка Python (ascii в 2.х, utf-8 в 3.х).

См. Unicode HOWTO ( 3.x) для получения дополнительной информации.

Юникода (somedir)

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

Если кто-то наткнется на этот пост, как я:

Небольшой взлом, который вы можете сделать, это (u'%s' % somedir)

Простое решение - использовать функцию Unicode следующим образом:

х = юникод ('1.2.3.4')

напечатать x

u'1.2.3.4 '

тип (x)

введите unicode

Теперь он показывает тип как юникод.

Другие вопросы по тегам