String 字元/應用文字處理函數至陣列
- 前述的分隔、判斷與取代這些函數,原本都是處理文字純量(scalar)
- 希望將這些函數映射到一個陣列上,像是將多位 NBA 球星姓名中的母音(a、e、i、o、u、A、E、I、O、U)移除的操作,必須仰賴像是 map 或者 apply 的技巧。
- 在 Python 的 re 模組中函數都是以處理文字純量為主的類型,故要實踐將一群球員姓名中的母音(a、e、i、o、u、A、E、I、O、U)取代為空字串,可以透過 map() 函數
- 值得注意的是 map() 函數輸出的結果是一個 map 物件不能夠很友善地印出來,需要用 list() 函數轉換為一個 list 檢視。
import re
def remove_vowels(x):
ans = re.sub(pattern="[aeiouAEIOU]+", repl="", string=x)
return ans
fav_players = ["Steve Nash", "Michael Jordan", "Paul Pierce", "Kevin Garnett", "Shaquille O'Neal"]
print(fav_players) # 移除母音前
## ['Steve Nash', 'Michael Jordan', 'Paul Pierce', 'Kevin Garnett', "Shaquille O'Neal"]
print(list(map(remove_vowels, fav_players))) # 移除母音後
## ['Stv Nsh', 'Mchl Jrdn', 'Pl Prc', 'Kvn Grntt', "Shqll 'Nl"]
Reference: