楼主:
art1 (人,原来不是人)
2020-10-05 03:59:04def 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
完全想不到可以这样写,第一眼看上去似懂非懂,要研究了才知道其奥妙
感觉一些计算字符相关的东西都可以这样写的样子