我有一个问题。如果我有一个字符串,例如:
str1 = 'Wazzup1'
和数字:
nums = '1234567890'
我需要一个代码来查看str1并告诉我它是否有任何数字(不是全部)。请帮忙。
答案 0 :(得分:8)
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 nums
,int(c)
和\d
定义数字的方式可能会有所不同。