在Python中对字符串应用过滤器

2 投票
7 回答
7021 浏览
提问于 2025-04-16 12:22

我有一个用户在输入他的用户名,我只想让有效的字符串通过,也就是说,只允许包含字母和数字的字符,也就是[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

撰写回答