python中有一個自帶的函數isdigit,可以返回某字符串是不是數字。如果是數字,返回True;反之,返回False。
str1 = '1' print(str1.isdigit()) str2 = '1.1' print(str2.isdigit()) str3 = '-1' print(str3.isdigit()) str4 = 'a' print(str4.isdigit())
它的運行結果是:
True
False
False
False
可以看到,isdigit函數只能辨別正整數,對小數和負數的判斷都出現了錯誤。
這里介紹一個函數,可以正確分辨小數和負數:
def is_number(s): try: # 如果能運行float(s)語句,返回True(字符串s是浮點數) float(s) return True except ValueError: # ValueError為Python的一種標准異常,表示"傳入無效的參數" pass # 如果引發了ValueError這種異常,不做任何事情(pass:不做任何事情,一般用做占位語句) try: import unicodedata # 處理ASCii碼的包 unicodedata.numeric(s) # 把一個表示數字的字符串轉換為浮點數返回的函數 return True except (TypeError, ValueError): pass return False
再做一次判斷:
str1 = '1' print(is_number(str1)) str2 = '1.1' print(is_number(str2)) str3 = '-1' print(is_number(str3)) str4 = 'a' print(is_number(str4))
結果正確:
True
True
True
False
很厲害的是,由於is_number里用到了unicodedata.numeric這個函數,我們現在對漢字表示的數字也可以進行分辨了,測試漢字'八':
str5 = '八' print(is_number(str5))
得到的結果是:
True
參考文章:http://www.runoob.com/python3/python3-check-is-number.html
————————————————
版權聲明:本文為CSDN博主「大羚羊」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/m0_37622530/article/details/81289520