1. 程式人生 > >python字串大小寫轉換及list和str轉換

python字串大小寫轉換及list和str轉換

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)