python中的字符串搜索

2024-10-04 05:31:08 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个字符串数组a=['abcbdefcd']和另一个字符串数组 T=['ab'、'abc'、'def'、'cd'、'abcd']

我想写一个函数,可以搜索数组a,如果它在T中找到一个在a中的字符串,则返回true或false

我想我会试试的

for text in A: if text in T: print (true)

else:

print(false)

但这并没有给我我想要的,有人能提出别的建议吗


Tags: 函数字符串textinfalsetrueabdef
3条回答

如果我正确理解了这个问题,你基本上需要找到两个列表的交集。如果列表T包含也存在于列表A中的元素,则返回true,否则返回false

要做到这一点,你有各种各样的Python解决方案:

方法1:

bool(set(a) & set(b))

试试这样的

a = ['abc','bca','av']
b = ['ab','bc']
print(bool(set(a) & set(b))) # this would return true in this case

另一种方法是使用生成器表达式对列表执行迭代:

a = set(a); any(i in a for i in b)

最后,您可以使用冻结集的不相交方法:

not set(a).isdisjoint(b)

对于您的具体要求:

a = ['abcbdefcd'] 
t = ['ab', 'abc', 'def', 'cd', 'abcd']

for text in t:
    print(text in a[0])

输出:

True
True
True
True
False

注意事项:

  1. 用小写字母命名变量
  2. 您可以使用t='abcbdefcd'而不是t=['abcbdefcd'],代码将是if text in t而不是if text in t[0]

这应该达到你想要的

A =  ['abcbdefcd']

T =  ['ab', 'abc', 'def', 'cd', 'abcd']

result = False
for text in A:
    for sub_text in T:
        if (sub_text in text):
            result = True
            break

if (result):
    print('True')
else:
    print('False')

相关问题 更多 >