(uchar >= u'\u0041' and uchar<=u'\u005A') 是 ASCII 大写字母 A-Z
(uchar >= u'\u0061' and uchar<=u'\u007A') 是 ASCII 小写字母 a-z
注释都说了,这个智能判断是否为字母,而不能判断是大写还是小写……
你这个写法也不够 Pythonic,可以写成
(u'\u0041' <= uchar <=u'\u005A') or (u'\u0061' <= uchar <=u'\u007A')
@
skinny Python 是可以直接比较字符串的 ASCII 值的
可以尝试以下代码:
from enum import Enum
class InAlphabetResult(Enum):
UpperCase = 1
LowerCase = 2
NotInAlphabet = 3
def in_alphabet(char):
if "a" <= char <= "z":
return InAlphabetResult.LowerCase
if "A" <= char <= "Z":
return InAlphabetResult.UpperCase
return InAlphabetResult.NotInAlphabet