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)