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

Есть ли способ конвертировать всю введенную пользователем строку из верхнего регистра или даже в верхний регистр в нижний регистр?

Например, километры -> километров.

6 Solutions collect form web for “Как преобразовать строку в нижний регистр в Python?”

s = "Kilometer" print(s.lower()) 

Официальной документацией является str.lower() .

Это не работает для неанглийских слов в utf-8. В этом случае decode('utf-8') может помочь:

 >>> s='Километр' >>> print s.lower() Километр >>> print s.decode('utf-8').lower() километр 

Вы можете сделать то, что сказал Питер, или если вы хотите, чтобы пользователь вводил что-то, вы могли бы это сделать:

 raw_input('Type Something').lower() 

Затем он автоматически преобразует то, что они набрали в нижнем регистре.

Примечание: raw_input был переименован для input в Python 3.x и выше.

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

Есть ли способ конвертировать всю введенную пользователем строку из верхнего регистра или даже в верхний регистр в нижний регистр?

Например, километры -> километров

Канонический питонический способ сделать это

 >>> 'Kilometers'.lower() 'kilometers' 

Однако, если целью является нечувствительность к регистру, вы должны использовать фальцовку:

 >>> "MASSE" == "Maße" False >>> "MASSE".lower() == "Maße".lower() False >>> "MASSE".casefold() == "Maße".casefold() True 

Это метод str в Python 3, но в Python 2 вы захотите посмотреть на PyICU или py2casefold – несколько ответов адресуют это здесь .

Unicode Python 3

Python 3 обрабатывает unicode как обычные строки:

 >>> string = 'Километр' >>> string 'Километр' >>> string.lower() 'километр' 

Unicode Python 2

Но Python 2 не, ниже, вставлен в оболочку, кодирует литерал как строку байтов, используя utf-8 .

И lower не отображает никаких изменений, которые будут знать сами объекты Unicode, поэтому мы получаем одну и ту же строку.

 >>> string = 'Километр' >>> string '\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80' >>> string.lower() '\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80' >>> print string.lower() Километр 

В сценариях Python будет возражать против non-ascii (как из Python 2.5 и предупреждения в Python 2.4), байты находятся в строке без кодировки, поскольку предполагаемое кодирование будет неоднозначным. Подробнее об этом см. В руководстве по Unicode в документах и PEP 263

Используйте литералы Unicode, а не строковые литералы

Таким образом, нам нужна строка unicode для обработки этого преобразования, легко выполняемая с помощью букв unicode:

 >>> unicode_literal = u'Километр' >>> print unicode_literal.lower() километр 

Обратите внимание, что байты полностью отличаются от байтов str – escape-символ равен '\u' за которым следует ширина 2 байта или 16-битное представление этих букв в unicode :

 >>> unicode_literal u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440' >>> unicode_literal.lower() u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440' 

Теперь, если мы имеем только его в форме str , нам нужно преобразовать его в unicode . Тип Юникода Python – это универсальный формат кодирования, который имеет много преимуществ по сравнению с большинством других кодировок. Мы можем использовать конструктор unicode или метод str.decode с кодеком для преобразования str в unicode :

 >>> unicode_from_string = unicode(string, 'utf-8') # "encoding" unicode from string >>> print unicode_from_string.lower() километр >>> string_to_unicode = string.decode('utf-8') >>> print string_to_unicode.lower() километр >>> unicode_from_string == string_to_unicode == unicode_literal True 

Оба метода преобразуются в тип unicode – и такие же, как и unicode_literal.

Лучшая практика, используйте Unicode

Рекомендуется всегда работать с текстом в Юникоде .

Программное обеспечение должно работать только со строками Unicode внутри, конвертируя его в конкретную кодировку на выходе.

Может кодироваться при необходимости

Тем не менее, чтобы вернуть нижний регистр в тип str , снова закодируйте строку python в utf-8 :

 >>> print string Километр >>> string '\xd0\x9a\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80' >>> string.decode('utf-8') u'\u041a\u0438\u043b\u043e\u043c\u0435\u0442\u0440' >>> string.decode('utf-8').lower() u'\u043a\u0438\u043b\u043e\u043c\u0435\u0442\u0440' >>> string.decode('utf-8').lower().encode('utf-8') '\xd0\xba\xd0\xb8\xd0\xbb\xd0\xbe\xd0\xbc\xd0\xb5\xd1\x82\xd1\x80' >>> print string.decode('utf-8').lower().encode('utf-8') километр 

Таким образом, в Python 2 Unicode может кодироваться в строки Python, а строки Python могут декодироваться в тип Unicode.

Кроме того, вы можете перезаписать некоторые переменные:

 s = input('UPPER CASE') lower = s.lower() 

если вы используете вот так:

 s = "Kilometer" print(s.lower()) - kilometer print(s) - Kilometer 

он будет работать только при вызове.

Если весь текст имеет верхний регистр, например «KILOMETER», и вы хотите, чтобы первый символ был уменьшен, сделайте

 text = "KILOMETER" result = text[:1] + text[1:].lower() print(result) 

Но чтобы очертить всю строку, выполните

 text = "KILOMETER" text = text.lower() print(text) 
Python - лучший язык программирования в мире.