在Python中对字符串应用过滤器
我有一个用户在输入他的用户名,我只想让有效的字符串通过,也就是说,只允许包含字母和数字的字符,也就是[a-zA-Z0-9]这些。对于Python我还比较陌生,不太确定语法该怎么写。
下面是我想要的代码示例,它会检查用户名,如果发现不合法的字符就返回假(false)。:
def _checkInput(input):
for char in input:
if !(char in [a-zA-Z0-9]):
return False
return True
谢谢!
7 个回答
4
Python 的字符串有很多实用的方法可以用来检查内容,比如:
str.isalnum()
:检查字符串是否只包含字母和数字str.isalpha()
:检查字符串是否只包含字母str.isdigit()
:检查字符串是否只包含数字str.islower()
:检查字符串是否全部是小写字母str.istitle()
:检查字符串是否是标题格式(每个单词首字母大写)str.isupper()
:检查字符串是否全部是大写字母
你需要用到的是 str.isalnum()
,这个方法会返回真(true),如果字符串里的所有字符都是字母或数字,并且至少有一个字符。
>>> 'hello1'.isalnum()
True
>>> 'hello 1'.isalnum()
False
>>> 'hello!'.isalnum()
False
>>> ''.isalnum()
False
就像上面的例子所示,字母和数字被认为是字母数字组合,但空格和标点符号则不算。
另外要注意,虽然从数学上讲,空字符串(也就是没有任何字符的字符串)不被认为是字母数字组合,但在大多数情况下,这其实是你需要的,尤其是在你的情况下,因为长度为零的用户名是没有意义的。
5
在字符串中有一个叫做 isalnum
的方法。它可以完成你想要实现的功能。
In [7]: 'ab123fd'.isalnum()
Out[7]: True
In [8]: 'ab123fd **'.isalnum()
Out[8]: False
4
你需要用到 isalnum 这个功能:
>>> name = raw_input('Enter your name: ')
Enter your name: foo_bar
>>> name.isalnum()
False
>>> name = raw_input('Enter your name: ')
Enter your name: foobar
>>> name.isalnum()
True