Python2和3中如何將(Unicode)字串轉換為小寫

Python 3轉換字串為小寫

從Python 3.0開始字串str型別預設就包含了 Unicode 字元,也就是說所有的字串比如 "unicode example", 'unicode example 2'都是按照Unicode來儲存的。

因此,在Python 3中你可以用 str.lower() 方法將任何的字串,不論其中是否包含Unicode字元,轉換為小寫型別。

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

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

Python 2.7轉換字串為小寫

Python 2.7中的字串str型別不是按照 Unicode編碼來儲存的,Unicode字串是Python 2.7中的unicode型別的例項。我們將字串轉換為小寫時,我們必須區分字串是ASCII字串還是unicode字串。

ASCII 型別

它與Python 3中使用的方法相同。str.lower()將字串str轉換為小寫。

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

unicode 型別

如果字串中的字元是unicode型別且未用unicode型別來明確表示,則str.lower()方法根本不會將字串轉換為小寫。

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

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

使用Unicode而不是str

我們需要定義包含Unicode字元的字串為unicode型別,也就是在字串的前面需要加上u

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: строкаслучая