Как добавить 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) для получения дополнительной информации.
Если кто-то наткнется на этот пост, как я:
Небольшой взлом, который вы можете сделать, это
(u'%s' % somedir)
Простое решение - использовать функцию Unicode следующим образом:
х = юникод ('1.2.3.4')
напечатать x
u'1.2.3.4 '
тип (x)
введите unicode
Теперь он показывает тип как юникод.