Как преобразовать строку в нижний кейс на Python 2 и 3

  1. Преобразование строки в нижний регистр на Python 3
  2. Конвертируйте строку в младший регистр на Python 2.7
  3. Заключение

Преобразование строки в нижний регистр на Python 3

str, поскольку Python 3.0 содержит по умолчанию символы Unicode, что означает, что любая строка вроде "unicode example", 'unicode example 2' хранится как Unicode.

Поэтому вы можете использовать str.lower() для преобразования любой строки в младший регистр на Python 3.

exampleString = "CaseString"
exampleString.lower()
#Out: 'casestring'

exampleString = "СтрокаСлучая"
exampleString.lower()
#Out: 'строкаслучая'

str.casefold() бескорректное преобразование

str.lower() преобразует строку в нижний регистр, но не преобразует различия в регистре в строке.

Например, ß в немецком языке равнозначно double s - ss, а ß сама по себе уже строка в нижнем регистре, поэтому str.lower() не преобразует ее.

Но str.casefold()с будет преобразовывать ßвss`.

>>> 'Straße'.lower()
'straße'
>>> 'Straße'.casefold()
'strasse'

Конвертируйте строку в младший регистр на Python 2.7

Тип str на Python 2.7 не хранится как Unicode, а строки Unicode являются экземплярами типа unicode. Мы должны различать, является ли строка ASCII строкой или Unicode строкой, когда мы преобразуем строку в младший регистр.

Тип ASCII

Это то же самое, что и метод, используемый на Python 3. str.lower() преобразует строку в нижний регистр.

exampleString = "CaseStringExample"
exampleString.lower()
#Out: 'casestringexample'

тип unicode

Если символы в строке имеют тип unicode, и строка явно не представлена в типе unicode, то метод str.lower() вообще не преобразует строку в нижний регистр.

exampleString = "СтрокаСлучая"
print exampleString.lower()
#Out: СтрокаСлучая

exampleString.lower() == exampleString
#Out: True

Pythonовые объекты к не-ASCII байтам в строке с отсутствием кодирования даны потому, что предполагаемое кодирование неявно.

Уникодирование Unicode литералов, но не str.

exampleUnicodeString = u"СтрокаСлучая"
exampleUnicode
#u'\u0421\u0442\u0440\u043e\u043a\u0430\u0421\u043b\u0443\u0447\u0430\u044f'
exampleUnicodeString.lower()
#u'\u0441\u0442\u0440\u043e\u043a\u0430\u0441\u043b\u0443\u0447\u0430\u044f'

print exampleUnicodeString.lower()
#Out: строкаслучая

Здесь видно, что первый символ строки конвертируется из \u0421 в \u0441.

Преобразовать str в unicode

Если заданная строка в виде str, то сначала нужно преобразовать ее в unicode перед преобразованием в нижний регистр.

exampleString = "СтрокаСлучая"
print exampleString.decode('utf-8').lower()
#Out: строкаслучая

Заключение

Метод lower() - это метод преобразования строки в нижний регистр как на Python 2, так и на Python 3, но с заметной разницей.

Строка на Python 3 по умолчанию является строкой unicode, а на Python 2 - нет. Если строка явно не представлена как unicode, например, не ставить u перед строкой, то строка в юникоде вообще не будет конвертирована в строку в нижнем регистре.

str.casefold преобразует различия в регистре в их бескорпусные совпадения, но доступно только на Python 3. Вы можете установить py2casefold на Python 2.

Сопутствующая статья - Python String

  • Как проверить, что строка пуста в Python
  • Как удалить белый пробел в строке на Python
  • Как конвертировать строку в дату на Python
  • Как проверить, содержит ли струна подвеску на Python
  • Как преобразовать список в струну на Python
  • Как преобразовать строку в плавучую или интру в Python
  • Как прочитать один файл строка за строкой к списку на Python
  • Как преобразовать строку в байты на Python
  • comments powered by Disqus