我試圖找出是否有一個簡單的方法使用for循環和列表來檢查用戶輸入字符串是否包含字母或字母和撇號,但不包括數字或字母和數字(字母和數字以及撇號)?如何檢查一個字符串是否包含字母或字母和撇號,但沒有數字?
我試過很多方法,似乎無法弄清楚它?我會很感激任何線索!謝謝。
我試圖找出是否有一個簡單的方法使用for循環和列表來檢查用戶輸入字符串是否包含字母或字母和撇號,但不包括數字或字母和數字(字母和數字以及撇號)?如何檢查一個字符串是否包含字母或字母和撇號,但沒有數字?
我試過很多方法,似乎無法弄清楚它?我會很感激任何線索!謝謝。
您似乎只想包含字母的字符串(加上也許是一個撇號),但沒有數字,儘管您已經更詳細地表達了要求。這可以在不正規表達式如下完成:
not any(c for c in my_str if c not in string.ascii_letters + "'")
請參見下面的示例代碼:
>>> test = ['abcde', "abcde'", 'abcde123', "abcde'123", 'abcde.']
>>> for s in test:
... print(s, '-->', not any(c for c in s if c not in string.ascii_letters + "'"))
...
abcde --> True
abcde' --> True
abcde123 --> False
abcde'123 --> False
abcde. --> False
希望這是顯而易見的,這將是更有效地做string.ascii_letters + "'"
只有一次,那你必須import string
第一。這只是一個例子。
非常感謝你! – kssan
您還可以使用set.issuperset
指定一組允許的字符:
from string import ascii_letters
allowed = set(ascii_letters+"'")
test = ['abcde', "abcde'", 'abcde123', "abcde'123", 'abcde.']
for s in test:
print("{} {}".format(s, allowed.issuperset(s)))
輸出:
abcde True
abcde' True
abcde123 False
abcde'123 False
abcde. False
正則表達式是關鍵字。 – karakfa
有沒有辦法做到這一點,沒有正則表達式? – kssan
不清楚你正在尋找什麼。聽起來你只想要沒有數字的字符串,這是否正確? –