fastnumbers參考文檔: https://fastnumbers.readthedocs.io,
除了提供fast_float,fast_real等函數來加速builtins API外,此包還提供了isreal, isfloat, isint, isintlike等API,方便調用判斷輸入是否為float或者int。 比調用float函數或者int函數,然后異常報錯后得到判斷結果(如代碼一)更為優雅;
需要注意的是 num_only,str_only並不是指明輸入參數 必須數字[0-9]串或者必須是字符串,而是數據類型是數字或者字符串。
代碼一:
def isfloat(abc): try: float(abc) return True except: return False print(isfloat("abc")) print(isfloat("-7\n"))
fastnumbers有一例外是會將非ascii碼的純數字也做判斷並返回True,所以需要進行過濾;
isfloat, isint, isreal等函數返回True; 疊加判斷是否為ascii嗎,防止中文、其他語言的中的數字被判斷為float類型; isascii代碼如代碼段二:
if isfloat(segs[0]) and isascii(segs[0]):
代碼二:
def is_ascii(str_): try: if str_.encode("ascii"): return True except: return False