upper - zfill in python




如何在Python中將字符串轉換為小寫 (6)

如何在Python中將字符串轉換為小寫?

有沒有辦法將整個用戶輸入的字符串從大寫,甚至是大寫部分轉換為小寫?

例如公里 - >公里

規範Pythonic這樣做的方式是

>>> '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 - 這裡有幾個解答 。

Unicode Python 3

Python 3將 Unicode作為常規字符串處理:

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

Unicode Python 2

但是Python 2並沒有將下面的代碼粘貼到shell中,而是使用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將反對非ascii(如Python 2.5和Python 2.4中的警告)字節在字符串中,但沒有給出編碼。 有關更多信息,請參閱docsPEP 263中的Unicode操作指南

使用Unicode文字,而不是文字

所以我們需要一個unicode字符串來處理這個轉換,用unicode文字很容易實現:

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

請注意,這些字節與str字節完全不同 - 轉義字符為'\u'後面跟著2個字節的寬度,或者這些unicode字母的16位表示形式:

>>> 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類型是一種通用編碼格式,與其他大多數編碼advantages ,它具有許多advantages 。 我們可以使用unicode編碼器的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格式的文本

軟件只能在內部使用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類型。

有沒有辦法將字符串從大寫,甚至是大寫部分轉換為小寫?

例如公里 - >公里。


下面解釋一些基本的python字符串方法##:

降低

字符串lower()方法將字符串中的所有大寫字符轉換為小寫字符並將其返回。

例:

string = "HeLLO PyTHON"
new_string = string.lower()

print string
print new_string

輸出:

HeLLO PyTHON
hello python

資本化

在Python中,大寫()方法將字符串的第一個字符轉換為大寫(大寫)字母。

例:

string = "hello python"
new_string = string.capitalize()

print string
print new_string

輸出:

hello python
Hello python

Swapcase

字符串swapcase()方法將所有大寫字符轉換為小寫字母,將所有小寫字符轉換為給定字符串的大寫字符並返回。

string = "HEllO PythOn"
new_string = string.swapcase()

print string
print new_string

產量

HEllO PythOn
heLLo pYTHoN

另外,你可以覆蓋一些變量:

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

如果你這樣使用:

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

它會在被調用時工作。


如果你想用map來對列表中的多個字符串執行這個操作,你將需要使用str.lower而不僅僅是lower

words = ['CATS', 'KITTENS', 'Pirate Cats', 'fluffy felines']
list(map(str.lower, words))

返回

['cats', 'kittens', 'pirate cats', 'fluffy felines']

它會將字符串轉換為小寫

string = "XYz"
converted = string.lower();
print("The converted lower case is:",converted)

對於Python 2,這對於UTF-8中的非英文單詞不起作用。 在這種情況下, decode('utf-8')可以幫助:

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






lowercase