def stringLenCJK(string):
# return string len including double count for double width characters
return sum(1 + (unicodedata.east_asian_width(c) in "WFA") for c in string)
在尋找計算雙位元字的字串長度方法時,看到這個程式碼
研究了一下發現(unicodedata.east_asian_width(c) in "WFA") for c in string 是
一個產生器,而 sum 的參數說明裏面有提到可以用 iterable
兩者結合的語意就變成把字串中的每一個字餵給 east_asian_width,如果
east_asian_width 回傳的結果是 "W" 或 "F" 或 "A" 的話,就讓總和 +2,否則 +1
完全想不到可以這樣寫,第一眼看上去似懂非懂,要研究了才知道其奧妙
感覺一些計算字元相關的東西都可以這樣寫的樣子