[英]Check if string has numbers, letters and spaces
我試圖提出一個assert語句,該語句檢查非空字符串s是否包含字母數字字符和空格:
assert s.isalnum()
我知道如果有空格,它將返回False,因為它會檢查每個字符是字母還是數字。 我該如何解決?
編輯:為澄清起見,我試圖創建一個斷言語句,以檢查非空字符串是否包含字母數字字符和/或空格。 例如,“ a 4 bc”和“ ab”都應返回True。
您可以使用all來檢查每個字符是否為字母數字或空格:
text = "apple and 123"
result = all(c.isalnum() or c.isspace() for c in text)
print(result)
text = "with ."
result = all(c.isalnum() or c.isspace() for c in text)
print(result)
輸出量
True
False
如果大多數包含空格和字母數字字符,則可以執行以下操作:
def only_alnum_and_spaces(t):
counts = {"spaces" : 0, "alnums": 0}
for c in t:
if c.isalnum():
counts["alnums"] += 1
elif c.isspace():
counts["spaces"] += 1
else:
return False
return counts["alnums"] > 0 and counts["spaces"] > 0
print(only_alnum_and_spaces("apple and 123"))
print(only_alnum_and_spaces("with ."))
print(only_alnum_and_spaces("appleand123"))
輸出量
True
False
False
還應注意,如@Chris_Rands所述,此.isspace將制表符視為空白。
您可以刪除空格進行測試:
assert s.replace(" ","").isalnum()
這是一種方法
def customIsAlnum(String[] words):
if(len(words) > 1):
for(word in words):
if(!word.isalnum()):
return false
else:
return false
return true
String str = "chelsea scored 3 goals"
String[] words = str.split()
print customIsAlnum(words)
也許這就是您想要的:
assert any(substr.issapce() or substr.isdigit() or substr.isalpha() for substr in s)
測試字符串:
>>> s1 = '123 45 abc 67 d'
>>> s2 = '123456'
>>> s3 = 'abcd'
>>> s4 = ':?--==++'
檢查字符串是否包含空格:
>>> def hasAnySpace(str):
... return ' ' in str
...
>>> hasAnySpace(s1)
True
>>> hasAnySpace(s2)
False
>>> hasAnySpace(s3)
False
>>> hasAnySpace(s4)
False
檢查字符串是否包含任何數字,可以使用任何函數和str.isdigit函數:
>>> def hasAnyDigit(str):
... return any (substr.isdigit() for substr in str)
...
>>> hasAnyDigit(s1)
True
>>> hasAnyDigit(s2)
True
>>> hasAnyDigit(s3)
False
>>> hasAnyDigit(s4)
False
檢查字符串是否包含任何字母字符,可以使用任何函數和str.isalpha函數:
>>> def hasAnyAlpha(str):
... return any(substr.isalpha() for substr in str)
...
>>> hasAnyAlpha(s1)
True
>>> hasAnyAlpha(s2)
False
>>> hasAnyAlpha(s3)
True
>>> hasAnyAlpha(s4)
False
檢查字符串是否包含任何數字,字母字符或空格 :
>>> def hasAnyAlNumSpace(str):
... return any(substr.isalpha() or substr.isdigit() or substr.isspace() for substr in str)
...
>>> hasAnyAlNumSpace(s1)
True
>>> hasAnyAlNumSpace(s2)
True
>>> hasAnyAlNumSpace(s3)
True
>>> hasAnyAlNumSpace(s4)
False
如果要使用assert語句,可以使用它們的任意組合:
>>> assert hasAnySpace(s1) or hasAnyDigit(s1) or hasAnyAlpha(s1)
>>> assert hasAnySpace(s2) or hasAnyDigit(s2) or hasAnyAlpha(s2)
>>> assert hasAnySpace(s3) or hasAnyDigit(s3) or hasAnyAlpha(s3)
>>> assert hasAnySpace(s4) or hasAnyDigit(s4) or hasAnyAlpha(s4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>>
>>> assert hasAnySpace(s1)
>>> assert hasAnySpace(s2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>>
>>> assert hasAnyAlNumSpace(s1)
>>> assert hasAnyAlNumSpace(s2)
>>> assert hasAnyAlNumSpace(s3)
>>> assert hasAnyAlNumSpace(s4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
當然,如果您不喜歡這些方法,則可以簡單地使用assert,如下所示:
assert ' ' in s1
assert any(substr.isdigit() for substr in s1)
assert any(substr.isalpha() for substr in s1)
assert (' ' in s1) or any(substr.isdigit() or substr.isalpha() for substr in s1)
assert any(substr.issapce() or substr.isdigit() or substr.isalpha() for substr in s1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.