我试图找出是否有一种简单的方法使用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
。这只是一个例子。