Python - Как я могу найти строку для символа Unicode, который является переменной? - PullRequest
8 голосов
/ 11 ноября 2011

Это работает

s = 'jiā'
s.find(u'\u0101')

Как мне сделать что-то вроде этого:

s = 'jiā'
zzz = '\u0101'
s.find(zzz)

Поскольку я сейчас использую переменную, как мне указать строку, представленную переменнойтакое Юникод?

Ответы [ 3 ]

7 голосов
/ 11 ноября 2011

Поскольку я сейчас использую переменную, как я могу указать, что строка, представленная переменной, является Unicode?

Определив его как строку Юникода в первую очередь.

zzz = u"foo"

Или, если у вас уже есть строка в какой-либо другой кодировке, путем преобразования ее в Unicode (исходная кодировка должна быть указана, если строка не ASCII).

zzz = unicode(zzz, encoding="latin1")

Или с помощью Python 3, где все строки являются Unicode.

3 голосов
/ 11 ноября 2011

zzz, как определено в вашем посте, является простым str объектом, а не unicode объектом, поэтому нет никакого способа указать, что это то, чем он на самом деле не является.Однако вы можете преобразовать объект str в объект unicode, указав кодировку:

s.find(zzz.decode("utf-8"))

Подстановка utf-8 любой кодировкой, в которой закодирована строка.

Обратите внимание, что в вашем примере

zzz = '\u0101'

zzz представляет собой простую строку длины 6. В дальнейшем нет простого способа исправить этот неправильный строковый литерал, за исключением хаков по линиям

* 1017.*
0 голосов
/ 18 марта 2014

В некоторых случаях (я игнорирую, когда) вам придется декодировать также строку, в которой вы смотрите:

s.decode("utf-8").find(u"\u0101")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...