我有一個短字串,需要一種方法來識別該字串中是否只有數字和/或“/”符號。如果字串中有字母或其他一些符號 - 這是不行的。只允許使用數字和“/”。
例如:
a = '123456' - 綠燈
b = '123//6' - 綠燈
c = '1m3456' - 不行
d = '1/80o0' - 不行
uj5u.com熱心網友回復:
只用set算術
def onlyallowed(text,allowed="/0123456789"):
return set(text).issubset(allowed)
print(onlyallowed("123456")) # True
print(onlyallowed("123//6")) # True
print(onlyallowed("1m3456")) # False
print(onlyallowed("1/80o0")) # False
說明:將文本轉換為一組(字符)并檢查所有這些character是否都存在。Optionalallowed可用于部署另一組允許的字符,例如只允許0s 和1s:
print(onlyallowed("01011",allowed="01")) # True
如果您希望使用在開始附近具有不允許字符的非常長的文本,您可以選擇all結合使用如下
def onlyallowed(text,allowed="/0123456789"):
return all(i in allowed for i in text)
all行為是return False在遇到非真值后立即執行(在這種情況下False,就像我做會員測驗一樣)
uj5u.com熱心網友回復:
import re
def recognize(self):
if re.search(r"[a-b]", self) is not None:
print("Red Light")
elif re.search(r"[0-9]|/", self) is not None:
print("Green Light")
recognize(your_string)
如果recognize()函式在字串中找到字母,則輸出將是“紅燈”,否則如果找到數字或“/”,則輸出將是“綠燈”。
uj5u.com熱心網友回復:
我相信這就是你要找的:
strings = ['123456', '123//6', '1m3456', '1/80o0']
print([string.replace('/', '').isdigit() for string in strings])
簡單地洗掉任何 / 字符(如果存在)并檢查它是否是所有數字對我來說似乎更易讀,而且更符合您用英語描述的方式:)
希望這有幫助。干杯!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/350594.html
上一篇:TypeError:canonlyconcatenatestr(not"tuple")tostr我該如何解決這個問題?
下一篇:ID:danglingTemporaryLifetimeUsingpointertotemporary.:C:有條件地改變函式內constchar函式引數的值
