Python判斷字符串是否為數(shù)字,浮點數(shù)或者字母
前言
在Python中處理字符串的函數(shù)比較豐富,有時需要把字符串轉化為整形、浮點型等;轉換過程中,發(fā)現(xiàn)有時會報錯,比如字符串“12*76”,轉換為整形,直接轉換int(“12*76”),會報無法轉換的錯誤的,因為*無法轉換為整形;所以在轉換前,需要先進行判斷該字符串的類型。
判斷字符串是否為數(shù)字(整形)
這個直接調用python的庫就可以了哈,假設str為字符串
str.isdigit() :判斷所有字符都是數(shù)字(整形)
返回值 True:該字符串都為數(shù)字;False:該字符串不都是數(shù)字。
str.isalnum() 判斷所有字符都是數(shù)字或者字母
返回值 True:該字符串都為數(shù)字或者字母;False:該字符串不都是數(shù)字或者字母。
判斷字符串是否為浮點數(shù)
這個就不能直接使用python的庫,畢竟浮點數(shù)有小數(shù)點的,小數(shù)點也算是一種符號,單純使用str.isdigit() 所有字符都是數(shù)字 來判斷是不行的;
不妨使用字符串分割(切片)函數(shù),把浮點數(shù)分為小數(shù)點左邊部分、小數(shù)點右邊部分,再分別檢測各部分是否為全數(shù)字
代碼實現(xiàn):
# 輸入?yún)?shù) str 需要判斷的字符串
# 返回值 True:該字符串為浮點數(shù);False:該字符串不是浮點數(shù)。
def IsFloatNum(str):
s=str.split('.')
if len(s)>2:
return False
else:
for si in s:
if not si.isdigit():
return False
return True判斷字符串是否為字母
這個直接調用python的庫就可以了哈,假設str為字符串
str.isalpha() 判斷所有字符都是字母
返回值 True:所有字符都是字母;False:所有字符不都是字母。
str.islower() 判斷所有字符都是小寫
str.isupper() 判斷所有字符都是大寫
str.istitle() 判斷所有單詞都是首字母大寫
判斷字符串是否為空
str.isspace() 判斷所有字符都是空白字符、\t、\n、\r
小結
str.isdigit() 判斷所有字符都是數(shù)字(整形)
str.isalnum() 判斷所有字符都是數(shù)字或者字母
str.isalpha() 判斷所有字符都是字母
str.islower() 判斷所有字符都是小寫
str.isupper() 判斷所有字符都是大寫
str.istitle() 判斷所有單詞都是首字母大寫
方法補充
在Python中,判斷字符串的具體類型(數(shù)字、浮點數(shù)、字母等)有多種方法,適用場景不同。下面系統(tǒng)介紹幾種常見需求及其最佳實現(xiàn)。
判斷字符串是否為純數(shù)字(非負整數(shù))
方法:使用字符串的 isdigit() 方法。
s = "12345" print(s.isdigit()) # True s = "12.3" print(s.isdigit()) # False (包含小數(shù)點) s = "-123" print(s.isdigit()) # False (負號不是數(shù)字) s = "0" print(s.isdigit()) # True
- 只匹配
0-9字符,不匹配負數(shù)、小數(shù)或其它數(shù)字形式(如中文數(shù)字)。 - 空字符串返回
False。
判斷字符串是否為整數(shù)(可帶正負號)
使用 int() 轉換并捕獲異常,可處理正負整數(shù)和零。
def is_integer(s):
try:
int(s)
return True
except ValueError:
return False
print(is_integer("123")) # True
print(is_integer("-456")) # True
print(is_integer("+7")) # True
print(is_integer("12.3")) # False
print(is_integer("12a")) # False
print(is_integer("")) # False- 適用于任何有效的整數(shù)表示,包括前導正負號。
- 不支持科學計數(shù)法(如
1e3會被視為浮點數(shù),但int("1e3")會報錯)。
判斷字符串是否為浮點數(shù)(可帶正負號、小數(shù)點、科學計數(shù)法)
使用 float() 轉換并捕獲異常。
def is_float(s):
try:
float(s)
return True
except ValueError:
return False
print(is_float("3.14")) # True
print(is_float("-0.001")) # True
print(is_float("2e-5")) # True
print(is_float("inf")) # True (無窮大)
print(is_float("NaN")) # True (非數(shù)字)
print(is_float("123")) # True (整數(shù)也是有效的浮點數(shù))
print(is_float("12a")) # False- 會識別
inf、-inf、NaN等特殊浮點值(根據(jù)需求可額外過濾)。 - 整數(shù)也會被判定為
True,若需嚴格區(qū)分小數(shù),可額外檢查是否包含小數(shù)點或科學計數(shù)法。
判斷字符串是否為純字母(只含字母,無空格或數(shù)字)
使用字符串的 isalpha() 方法。
s = "Hello" print(s.isalpha()) # True s = "Hello123" print(s.isalpha()) # False (包含數(shù)字) s = "你好" print(s.isalpha()) # True (中文字符也被視為字母) s = " " print(s.isalpha()) # False
- 對于非ASCII字母(如中文、希臘字母)也返回
True。 - 如需僅限英文字母,可使用正則
[A-Za-z]。
判斷字符串是否為字母或數(shù)字組合(無其他字符)
使用字符串的 isalnum() 方法。
print("abc123".isalnum()) # True
print("123".isalnum()) # True
print("abc".isalnum()) # True
print("abc 123".isalnum()) # False (含空格)
print("abc_123".isalnum()) # False (含下劃線)- 等價于
isalpha() or isdigit(),但一次調用更高效。 - 同樣支持中文等非ASCII字符。
使用正則表達式精確控制
當需要更復雜的規(guī)則(例如:允許前導負號、小數(shù)點后必須有數(shù)字、不能是科學計數(shù)法等)時,可以使用正則。
import re
def is_positive_integer(s):
"""只允許純數(shù)字字符串,無前導零(可選)"""
return bool(re.fullmatch(r'[1-9][0-9]*|0', s))
def is_decimal_float(s):
"""嚴格判斷浮點數(shù):必須有小數(shù)點,且小數(shù)點前后至少有一位數(shù)字"""
return bool(re.fullmatch(r'-?\d+\.\d+', s))
def is_english_letters(s):
"""僅限英文字母(大小寫)"""
return bool(re.fullmatch(r'[A-Za-z]+', s))使用 re.fullmatch 確保整個字符串完全匹配,避免部分匹配。
綜合判斷示例:識別數(shù)字、浮點數(shù)、字母
def classify_string(s):
if not s:
return "空字符串"
if s.isdigit():
return "非負整數(shù)"
if s.isalpha():
return "字母字符串(含多語言)"
try:
int(s)
return "整數(shù)(可帶符號)"
except ValueError:
pass
try:
float(s)
return "浮點數(shù)(含科學計數(shù)法)"
except ValueError:
pass
if s.isalnum():
return "字母數(shù)字混合"
return "其他類型"
# 測試
print(classify_string("123")) # 非負整數(shù)
print(classify_string("-456")) # 整數(shù)(可帶符號)
print(classify_string("3.14")) # 浮點數(shù)(含科學計數(shù)法)
print(classify_string("abc")) # 字母字符串(含多語言)
print(classify_string("abc123")) # 字母數(shù)字混合
print(classify_string(" ")) # 其他類型注意事項
- 空字符串:上述
isdigit()、isalpha()、isalnum()對空字符串均返回False;int()/float()轉換會拋出異常,需額外處理。 - 正負號與空格:
isdigit()不識別符號;int()和float()可以識別前導正負號,但會忽略前后空格。 - 科學計數(shù)法:
float()可識別,但isdigit()不能,可根據(jù)業(yè)務決定是否接受。 - Unicode數(shù)字:
isdigit()可以識別其他語言的數(shù)字(如 "一二三"),如需僅限ASCII數(shù)字,可用s.isdigit() and s.isascii()(Python 3.7+)。
到此這篇關于Python判斷字符串是否為數(shù)字,浮點數(shù)或者字母的文章就介紹到這了,更多相關Python判斷字符串類型內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python中axis=0與axis=1指的方向有什么不同詳解
對數(shù)據(jù)進行操作時,經(jīng)常需要在橫軸方向或者數(shù)軸方向對數(shù)據(jù)進行操作,這時需要設定參數(shù)axis的值,下面這篇文章主要給大家介紹了關于Python中axis=0與axis=1指的方向有什么不同的相關資料,需要的朋友可以參考下2024-01-01
python中websockets與主線程傳遞參數(shù)的實現(xiàn)
本文主要介紹了python中websockets與主線程傳遞參數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-02-02
Python利用pdfplumber實現(xiàn)讀取PDF寫入Excel
pdfplumber專注PDF內容提取,例如文本(位置、字體及顏色等)和形狀(矩形、直線、曲線),還有解析表格的功能。本文主要為大家介紹如何利用pdfplumber實現(xiàn)讀取PDF寫入Excel,需要的可以參考一下2022-06-06
淺談sklearn中predict與predict_proba區(qū)別
這篇文章主要介紹了淺談sklearn中predict與predict_proba區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

