如何确定str是否有任何数字

时间:2013-12-25 19:02:12

标签: python string digit

我有一个问题。如果我有一个字符串,例如:

str1 = 'Wazzup1'

和数字:

nums = '1234567890'

我需要一个代码来查看str1并告诉我它是否有任何数字(不是全部)。请帮忙。

5 个答案:

答案 0 :(得分:8)

使用anygenerator expression

any(x in nums for x in str1)

以下是演示:

>>> str1 = 'Wazzup1'
>>> nums = '1234567890'
>>> any(x in nums for x in str1)
True
>>>

请注意,上述内容适用于您要测试的自定义数字集。但是,如果您只是在寻找数字,那么更简洁的方法是使用str.isdigit

>>> str1 = 'Wazzup1'
>>> any(x.isdigit() for x in str1)
True
>>>

答案 1 :(得分:3)

使用any函数,该函数返回一个布尔值,如果iterable中至少有一个元素为真,则返回true。

string = 'Wazzup1'
result = any(c.isdigit() for c in string)
print(result) # True

答案 2 :(得分:2)

正如大多数Python程序员会告诉你的那样,最简洁的方法是使用:

any(x in nums for x in str1)

但是,如果您是Python的新手,或者需要更好地掌握字符串操作的基础知识,那么您应该学习如何使用更基本的工具来实现这一目标。

您可以使用围绕索引的方括号访问Python中的字符串,列表,元组或任何其他 iterable 的各个元素。字符串的字符从0开始编制索引(例如"hello"[0]给出"h")。

使用for循环,对于Python新手来说,解决方案比上面提到的any解决方案更容易理解:

result = False
for i in range(len(str1)):
    if str1[i] in nums:
        result = True

Python for循环也可以直接遍历字符串的元素:

result = False
for x in str1:
    if x in nums:
        result = True

在这篇文章的第一个代码片段中,表达式x in nums for x in str1使用Python的列表理解功能。这会遍历x的每个元素str1,并查找x in nums的结果。如果(且仅当)这些结果中的至少一个为any(x in nums for x in str1)(意味着数字位于True中),则True会返回str1。这很像本文中给出的第二个for循环示例,许多Python程序员选择此选项,因为它简洁,并且仍然可以被其他Python程序员理解。

答案 3 :(得分:0)

您可以使用any()string.digits来检查字符串是否包含数字:

import string

if any(x in string.digits for x in str1):
    pass

答案 4 :(得分:0)

您还可以使用正则表达式:

>>> str1 = 'Wazzup1'
>>> import re
>>> bool(re.search(r'\d', str1))
True

注意:由于区域设置或Unicode,c.isdigit()c in numsint(c)\d定义数字的方式可能会有所不同。