문자열을 소문자로 변환하는 방법이 있습니까?
"Kilometers" → "kilometers"
문자열을 소문자로 변환하는 방법이 있습니까?
"Kilometers" → "kilometers"
사용 str.lower()
:
"Kilometer".lower()
이 작업을 수행하는 표준 Python 방식은 다음과 같습니다.
>>> 'Kilometers'.lower()
'kilometers'
그러나 목적이 대소문자를 구분하지 않는 일치를 수행하는 것이라면 대소문자 접기를 사용해야 합니다.
>>> 'Kilometers'.casefold()
'kilometers'
이유는 다음과 같습니다.
>>> "Maße".casefold()
'masse'
>>> "Maße".lower()
'maße'
>>> "MASSE" == "Maße"
False
>>> "MASSE".lower() == "Maße".lower()
False
>>> "MASSE".casefold() == "Maße".casefold()
True
이것은 Python 3의 str 메서드이지만 Python 2에서는 PyICU 또는 py2casefold를 보고 싶을 것 입니다. 여러 답변이 여기에 설명 되어 있습니다 .
Python 3 은 일반 문자열 리터럴을 유니코드로 처리합니다.
>>> string = 'Километр'
>>> string
'Километр'
>>> string.lower()
'километр'
Python 2에서 쉘에 붙여넣은 아래는 리터럴을 바이트열로 인코딩합니다 utf-8
.
그리고 lower
바이트열이 인식할 수 있는 변경 사항을 매핑하지 않으므로 동일한 문자열을 얻습니다.
>>> 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은 의도한 코딩이 모호하기 때문에 인코딩이 지정되지 않은 문자열에 있는 비 ASCII(Python 2.5 및 Python 2.4의 경고) 바이트에 반대합니다. 이에 대한 자세한 내용은 문서 및 PEP 263 의 유니코드 방법을 참조하세요.
str
사용따라서 우리는 unicode
이 변환을 처리하기 위해 문자열이 필요합니다. 유니코드 문자열 리터럴로 쉽게 수행할 수 있습니다. 접두사로 명확화 u
합니다( u
접두사는 Python 3에서도 작동합니다).
>>> unicode_literal = u'Километр'
>>> print(unicode_literal.lower())
километр
바이트는 바이트와 완전히 다릅니다 str
. 이스케이프 문자 '\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과 동일합니다.
항상 유니코드 텍스트로 작업 하는 것이 좋습니다 .
소프트웨어는 내부적으로 유니코드 문자열에서만 작동해야 하며 출력 시 특정 인코딩으로 변환해야 합니다.
그러나 type 에서 소문자를 다시 얻으려면 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에서 유니코드는 Python 문자열로 인코딩할 수 있고 Python 문자열은 유니코드 유형으로 디코딩할 수 있습니다.
Python 2에서는 UTF-8의 영어가 아닌 단어에 대해서는 작동하지 않습니다. 이 경우 도움이 decode('utf-8')
될 수 있습니다.
>>> s='Километр'
>>> print s.lower()
Километр
>>> print s.decode('utf-8').lower()
километр
[python] 줄 바꿈이나 공백 없이 인쇄하는 방법 (0) | 2022.08.28 |
---|---|
[python] Python의 정적 클래스 변수 및 메서드 (0) | 2022.08.28 |
[python] Python에서 문자열의 하위 문자열을 얻으려면 어떻게 해야 합니까? (0) | 2022.08.28 |
[python] 목록의 마지막 요소를 어떻게 얻습니까? (0) | 2022.08.28 |
[python] Python 사전에서 키를 제거하려면 어떻게 해야 합니까? (0) | 2022.08.28 |