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

10-02 06:42