Можно ли написать автоматический «преобразователь кода»?=)
Нет.str
и unicode
- это два разных типа, которые имеют разные цели.Вы не должны пытаться заменить каждое вхождение строки байтов строкой Unicode, ни в Python 2, ни в Python 3.
Продолжайте использовать строки байтов для двоичных данных.В частности, все, что вы записываете в файл или сетевой сокет, это байты.И используйте строки Unicode для текста, обращенного к пользователю.
Между ними находится серая область внутренних строк символов ASCII, которые в равной степени могут быть байтами или Unicode.В Python 2 это обычно байты, в Python 3 обычно Unicode.Если вы готовы ограничить свой код Python 2.6+, вы можете пометить свои строки с определенными байтами как b''
и bytes
, строки с определенными символами как u''
и unicode
и использовать ''
иstr
для строк «независимо от типа строки по умолчанию».