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

