检查字符串中的一个字符是数字还是字母[Python] [关闭]

Posted

技术标签:

【中文标题】检查字符串中的一个字符是数字还是字母[Python] [关闭]【英文标题】:Check if one character in string is numeric or is a letter [Python] [closed] 【发布时间】:2015-02-26 14:51:54 【问题描述】:

我想检查字符串,看看字符串中是否至少有一个字符是字母或数字。我该怎么做?

【问题讨论】:

【参考方案1】:

你可以使用re.search

if re.search(r'[a-zA-Z\d]', string):

如果字符串至少包含一个字母或数字,它将返回一个匹配对象。

示例:

>>> 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'>
>>> 

【讨论】:

从来没有注意到python 3改变了匹配对象的repr,这很好。 那么“foo0”会返回为真吗?【参考方案2】:

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

如果我们找到任何字母或数字字符,它将短路,如果字符串不包含任何字符,则返回 False。

【讨论】:

我猜 op 期望 "%*&^%A" 也返回 True,因为“至少一个字符”是一个字母。【参考方案3】:

另一种解决方案可能是(不要忘记import string):

any(c in s for c in string.letters + string.digits)

(与正则表达式解决方案相比,这是依赖于语言环境的,例如包括德语变音符号等)

【讨论】:

以上是关于检查字符串中的一个字符是数字还是字母[Python] [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查字母是字母还是数字?

检测Python字符串是数字还是字母[重复]

python 判断字符串是字母 数字 大小写还是空格

Python中如何从键盘中输入字符串,统计字母,数字,符号和空格的个数?

只需要一个正则表达式来检查字符串中的“2 个字母和 4 个数字”

在不使用正则表达式的情况下,判断一个字符是 Java 中的字母还是数字的最佳方法是啥?