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)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章