Python - 检测字符串之间的包含


检测字符串之间的包含

 

 

 

Python中, 可以检测字符串之间的包含问题.

containsAny, 只要包含任何一个字符即可;

containsOnly, 所有字符都包含在内;

containsAll, 包含全部;

 

代码:

 

# -*- coding: utf-8 -*-

'''
Created on 2014.5.25

@author: C.L.Wang
'''

'''存在任何'''
def containsAny(seq, aset):
    for c in seq:
        if c in aset: return True
    return False

import itertools
def containsAny2(seq, aset):
    for item in itertools.ifilter(aset.__contains__, seq) :
        return True
    return False

def containsAny3(seq, aset):
    return bool(set(aset).intersection(seq))

'''全部存在'''
def containsOnly(seq, aset):
    for c in seq:
        if c not in aset: return False
    return True

'''包含全部'''
def containsAll(seq, aset):
    #print(set(aset).difference(seq))
    return not set(aset).difference(seq)

import string
notrans = string.maketrans('', '')
def containsAny4(astr, strset):
    return len(strset) != len(strset.translate(notrans, astr))

def containsAll2(astr, strset):
    return not strset.translate(notrans, astr)

if __name__ == '__main__':
    L1 = [1, 2, 3, 4]
    L2 = [5, 6, 7, 8]
    L3 = [1, 4, 7, 10]
    print(L1 constains any in L2 :  + str(containsAny(L1, L2)))
    print(L1 constains any in L3 :  + str(containsAny(L1, L3)))
    
    print(L1 constains any in L2 (2) :  + str(containsAny2(L1, L2)))
    print(L1 constains any in L3 (2) :  + str(containsAny2(L1, L3)))
    
    print(L1 constains any in L2 (3) :  + str(containsAny3(L1, L2)))
    print(L1 constains any in L3 (3) :  + str(containsAny3(L1, L3)))
    
    L4 = [1, 1, 2, 2, 3, 4]
    L5 = [1, 1, 2, 2, 3, 4, 5]

    print(L1 constains only in L4 :  + str(containsOnly(L1, L4)))
    print(L1 constains only in L5 :  + str(containsOnly(L1, L5)))
    
    print(L1 constains all in L4 (2) :  + str(containsAll(L1, L4)))
    print(L1 constains all in L5 (2) :  + str(containsAll(L1, L5)))


    pass

输出:

 

 

L1 constains any in L2 : False
L1 constains any in L3 : True
L1 constains any in L2 (2) : False
L1 constains any in L3 (2) : True
L1 constains any in L2 (3) : False
L1 constains any in L3 (3) : True
L1 constains only in L4 : True
L1 constains only in L5 : True
L1 constains all in L4 (2) : True
L1 constains all in L5 (2) : False


 

/

 

 

评论关闭