파이썬 2와 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()
는 문자열을 소문자로 변환하지만 문자열의 대소 문자 구분은 변환하지 않습니다.
예를 들어, 독일어에서ß
는 double s
-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()
메소드는 문자열을 소문자로 전혀 변환하지 않습니다.
# python 2.x
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
로 변환 된 것을 볼 수 있습니다.
str
를 unicode
로 변환
주어진 문자열이 str
의 형식이면, 소문자 변환 전에 먼저유니 코드
로 변환해야합니다.
exampleString = "СтрокаСлучая"
print exampleString.decode("utf-8").lower()
# Out: строкаслучая
결론
lower()
메소드는 파이썬 2와 3에서 문자열을 소문자로 변환하는 방법이지만 눈에 띄는 차이가 있습니다.
파이썬 3의 문자열은 기본적으로 ‘유니 코드’문자열이지만 파이썬 2의 문자열은 그렇지 않습니다. 문자열이 명시 적으로 ‘유니 코드’유형으로 표시되지 않으면 (예 : 문자열 앞에 u
를 넣지 않음) 유니 코드 문자열은 전혀 소문자로 변환되지 않습니다.
str.casefold
는 대소 문자 구분을 대소 문자 구분없이 변환하지만 Python 3에서만 사용할 수 있습니다. Python 2에서 py2casefold를 설치할 수 있습니다.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook