如何编写一个函数来检测字符串中是否包含非字母字符?
类似的东西:
def detection(a):
if !"qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM" in a:
return True
else:
return False
print detection("blablabla.bla")
答案 0 :(得分:3)
使用str.isalpha()
method;如果字符串中的所有字符都是字母,则它只返回True
。使用not
取消结果;如果object.isalpha()
返回True
(字符串中仅 字母),则not object.isalpha()
会返回False
,反之亦然:
def detection(string):
return not string.isalpha()
演示:
>>> def detection(string):
... return not string.isalpha()
...
>>> detection('jfiopafbjk')
False
>>> detection('42jfiopafbjk')
True
>>> detection('jfiopafbjk42')
True
>>> detection('jfiop42afbjk')
True
答案 1 :(得分:1)
您的伪代码尝试的方法可以写成如下:
from string import ascii_letters
def detection(s, valid=set(ascii_letters)):
"""Whether or not s contains only characters in valid."""
return all(c in valid for c in s)
这使用string.ascii_letters
来定义有效字符(而不是写出您自己的字符串文字),使用set
来提供有效的(O(1)
)成员资格测试和all
生成器表达式,用于计算字符串c
中的所有字符s
。
鉴于str.isalpha
已经存在,这将重新发明轮子。