繁体   English   中英

检查是否有任何字符串列表在另一个字符串中

[英]Check if any of a list of strings is in another string

在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"这基本上删除了[]但这也没有用。 希望我能得到答案; 谢谢 :)

使用内置的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)

简而言之,您需要单独检查每个数字。

有很多方法可以做到这一点:

例如,您可以使用循环(左侧作为练习)或使用集来实现此目的

if set(test) & set(numbers):
  ...

或者通过使用str.isdigit

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

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

其他可能的方法是迭代遍历每个字符并使用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

正如NPE所说,你必须检查每一个数字。 我这样做的方式是使用简单的for循环。

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

希望这有助于:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM