Если вы хотите преобразовать набор стандартных строк в Unicode, вы можете отобразить эту функцию в своем списке:
lst = ["aaa", "bbb", "ccc"]
map(unicode, lst)
, что дает
[u"aaa", u"bbb", u"ccc"]
Если, однако, lst
содержит строку символов, отличную от ASCII, вам нужно добавить префикс этой конкретной строки к u
.Если вы этого не сделаете, вы получите эту ошибку при конвертации:
lst = ["\xe4"]
map(unicode,lst)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
Как отмечено в комментариях, этот ответ отличается для Python 2.x или 3.x.В Python 3 все меняется :
Все, что вы думали о двоичных данных и Unicode, изменилось.Python 3.0 использует понятия текстовых и (двоичных) данных вместо строк Unicode и 8-битных строк.Весь текст в Unicode;однако закодированный Unicode представляется в виде двоичных данных.Тип, используемый для хранения текста, является str, тип, используемый для хранения данных, является байтами.Самая большая разница с ситуацией 2.x состоит в том, что любая попытка смешать текст и данные в Python 3.0 вызывает TypeError, тогда как, если бы вы смешали Unicode и 8-битные строки в Python 2.x, это сработало бы, если бы 8-битнаяСтрока содержит только 7-битные (ASCII) байты, но вы получите UnicodeDecodeError, если она содержит не-ASCII значения.Это ценностное поведение вызывало множество печальных лиц на протяжении многих лет.