파이썬 2와 3에서 문자열을 소문자로 변환하는 방법

  1. 파이썬 3에서 문자열을 소문자로 변환
  2. Python 2.7에서 문자열을 소문자로 변환
  3. 결론

파이썬 3에서 문자열을 소문자로 변환

파이썬 3.0에는 기본적으로Unicode문자가 포함되어 있기 때문에 str 유형으로,"unicode example",'unicode example 2'와 같은 문자열은 Unicode 로 저장됩니다.

따라서 파이썬 3에서 str.lower()를 사용하여 문자열을 소문자로 변환 할 수 있습니다.

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

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

str.casefold()대소 문자 변환

str.lower()는 문자열을 소문자로 변환하지만 문자열의 대소 문자 구분은 변환하지 않습니다.

예를 들어, 독일어에서ß는 doubles-ss 와 같고ß 자체는 이미 소문자이므로 str.lower()는 그것을 변환하지 않습니다.

그러나 str.casefold()ßss 로 변환합니다.

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

Python 2.7에서 문자열을 소문자로 변환

Python 2.7의 str 유형은 Unicode 로 저장되지 않으며 Unicode 문자열은 unicode유형의 인스턴스입니다. 문자열을 소문자로 변환 할 때 문자열이 ASCII문자열인지 또는 ‘유니 코드’문자열인지 구분해야합니다.

ASCII 유형

파이썬 3에서 사용 된 방법과 동일하다.str.lower()는 문자열을 소문자로 변환한다.

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

unicode유형

문자열의 문자가 ‘유니 코드’유형이고 문자열이 ‘유니 코드’유형으로 명시 적으로 표현되지 않은 경우 str.lower()메소드는 문자열을 소문자로 전혀 변환하지 않습니다.

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

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

의도 된 코딩이 암시 적이므로 인코딩이 제공되지 않은 문자열에서 파이썬은 ASCII 가 아닌 바이트에 객체를 제공합니다.

** 유니 코드 리터럴을 사용하지만 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 로 변환 된 것을 볼 수 있습니다.

strunicode 로 변환

주어진 문자열이 str 의 형식이면, 소문자 변환 전에 먼저유니 코드로 변환해야합니다.

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

결론

lower()메소드는 파이썬 2와 3에서 문자열을 소문자로 변환하는 방법이지만 눈에 띄는 차이가 있습니다.

파이썬 3의 문자열은 기본적으로 ‘유니 코드’문자열이지만 파이썬 2의 문자열은 그렇지 않습니다. 문자열이 명시 적으로 ‘유니 코드’유형으로 표시되지 않으면 (예 : 문자열 앞에 u를 넣지 않음) 유니 코드 문자열은 전혀 소문자로 변환되지 않습니다.

str.casefold 는 대소 문자 구분을 대소 문자 구분없이 변환하지만 Python 3에서만 사용할 수 있습니다. Python 2에서 py2casefold를 설치할 수 있습니다.

관련 문장 - Python String

  • 파이썬에서리스트를 문자열로 변환하는 방법
  • 파이썬에서 문자열에서 구두점을 제거하는 방법