python字串大小寫轉換及list和str轉換
阿新 • • 發佈:2018-12-29
1.字串的編碼
問題一:能不能像C語言那樣用 ch = ch +32 來把大寫的字元程式設計小寫的?
可以的,如下所示:
s = chr(ord(s) - 32)
先用ord()
函式獲取字元的整數表示,chr()
函式把編碼轉換為對應的字元
python使用UTF-8編碼模式。不過可能是因為在python中字元不用int型別,不像C語言那樣,所以大小寫轉化時不能直接相加減,而是要用ord()和chr()兩個函式轉化一下。
2.字串和list的轉化
字串是不是一個list,能不能像操作list一樣操作它?
字串可以當成是一個list,不過在這之前要做一下簡單的變換,比如
str = 'hello'
str[0] = 'A'
print(str[0])
報錯,資訊為
TypeError: 'str' object does not support item assignment
因此更改程式碼:
str = 'sdfsfsfsf'
str = list(str)
str[0] = 'A'
print(str[0])
把str轉化成一個list,這個時候就再報錯了。
看下圖:
['A', 'd', 'a', 'm'] 是 字串'Adam'的list形式,'LISA'是正常的str形式。
list如何轉化成str?
str = ''.join(str)
結果變成
發現了吧,和剛剛不一樣吧。
其實就是一個空字串用join函式加上了一個list型別的物件。
如果是
str = '*****'.join(str)
結果為
最後
寫這篇文章的原因是今天再看廖雪峰python的map/reduce教程,其中一道作業就是:
利用map()
函式,把使用者輸入的不規範的英文名字,變為首字母大寫,其他小寫的規範名字。輸入:['adam', 'LISA', 'barT']
,輸出:['Adam', 'Lisa', 'Bart']
:
完整程式碼如下:
def lowercase2uppercase(str):
if str[0]>='a' and str[0]<='z':
str = list(str)
str[0] = chr(ord(str[0]) - 32)
str = ''.join(str)
print('str' + str[0])
pass
return str
L1 = ['adam', 'LISA', 'barT']
result = list(map(lowercase2uppercase,L1))
print(result)