检查一个字符串中是否包含列表中的任意一个字符串

14
在Python中,我试图创建一个程序来检查字符串中是否包含“数字”,但似乎出现了错误。这是我的代码:
numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]

test = input()

print(test)
if numbers in test:
    print("numbers")

这是我的错误:

TypeError: 'in <string>' requires string as left operand, not list
我试图将数字转换成numbers = "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0",基本上是去掉了[],但这也没有起作用。希望能得到答案,谢谢 :)

2
你想知道什么?是列表中的每个数字吗?还是其中哪些数字? - WNG
2
我想知道字符串中是否包含任何数字。 - jakethefake
4个回答

23
使用内置的 any() 函数:
numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
s = input()

test = any(n in s for n in numbers)
print(test)

3
简而言之,您需要逐个检查每个数字。
有许多方法可以实现这一点:
例如,您可以使用循环(留作练习),或者使用集合来实现。
if set(test) & set(numbers):
  ...

或者通过使用 str.isdigit

if any(map(str.isdigit, test)):
  ...

(请注意,这两个示例都假定您正在测试数字,并且不容易推广到任意子字符串。)

1

另一种可能的方法是通过迭代每个字符并使用 isnumeric() 方法检查它是否为数字:

input_string = input()

# to get list of numbers
num_list = [ch for ch in input_string if ch.isnumeric()]
print (num_list)

# can use to compare with length to see if it contains any number
print(len(num_list)>0)

如果 input_string = 'abc123',那么 num_list 将存储在 input_string 中的所有数字,即 ['1', '2', '3'],且 len(num_list)>0 的结果是 True

0

正如NPE所说,您必须检查每个数字。我使用简单的for循环来完成这项工作。

for i in numbers:
    if i in test:
        print ("test")

希望这有所帮助 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接