检查字符串中的一个字符是数字还是字母 [Python]
Check if one character in string is numeric or is a letter [Python]
我想检查字符串,看看字符串中至少有一个字符是字母还是数字。我该怎么做?
你可以使用 re.search
if re.search(r'[a-zA-Z\d]', string):
如果字符串至少包含一个字母或数字,它将 return 匹配对象。
示例:
>>> s = "foo0?"
>>> re.search(r'[a-zA-Z\d]', s)
<_sre.SRE_Match object; span=(0, 1), match='f'>
>>> s = "???"
>>> re.search(r'[a-zA-Z\d]', s)
>>> s = "???0"
>>> re.search(r'[a-zA-Z\d]', s)
<_sre.SRE_Match object; span=(3, 4), match='0'>
>>>
str.isalnum
:
In [16]: s = "foo"
In [17]: s.isalnum()
Out[17]: True
In [20]: s = "123"
In [21]: s.isalnum()
Out[21]: True
In [22]: s = "foo123"
In [23]: s.isalnum()
Out[23]: True
然后使用任何:
any(x.isalnum() for x in s)
In [24]: s = "!@1"
In [25]: any(x.isalnum() for x in s)
Out[25]: True
In [27]: s = "!@()"
In [28]: any(x.isalnum() for x in s)
Out[28]: False
如果我们发现任何字母或数字字符,它将短路,或者 return 如果字符串不包含任何字符,则为 False。
另一个解决方案可能是(别忘了 import string
):
any(c in s for c in string.letters + string.digits)
(与正则表达式解决方案相反,这是依赖于语言环境的,例如包括德语变音符号等)
我想检查字符串,看看字符串中至少有一个字符是字母还是数字。我该怎么做?
你可以使用 re.search
if re.search(r'[a-zA-Z\d]', string):
如果字符串至少包含一个字母或数字,它将 return 匹配对象。
示例:
>>> s = "foo0?"
>>> re.search(r'[a-zA-Z\d]', s)
<_sre.SRE_Match object; span=(0, 1), match='f'>
>>> s = "???"
>>> re.search(r'[a-zA-Z\d]', s)
>>> s = "???0"
>>> re.search(r'[a-zA-Z\d]', s)
<_sre.SRE_Match object; span=(3, 4), match='0'>
>>>
str.isalnum
:
In [16]: s = "foo"
In [17]: s.isalnum()
Out[17]: True
In [20]: s = "123"
In [21]: s.isalnum()
Out[21]: True
In [22]: s = "foo123"
In [23]: s.isalnum()
Out[23]: True
然后使用任何:
any(x.isalnum() for x in s)
In [24]: s = "!@1"
In [25]: any(x.isalnum() for x in s)
Out[25]: True
In [27]: s = "!@()"
In [28]: any(x.isalnum() for x in s)
Out[28]: False
如果我们发现任何字母或数字字符,它将短路,或者 return 如果字符串不包含任何字符,则为 False。
另一个解决方案可能是(别忘了 import string
):
any(c in s for c in string.letters + string.digits)
(与正则表达式解决方案相反,这是依赖于语言环境的,例如包括德语变音符号等)