代码如下:
#encoding=utf-8 print '中国' #检查字符串中是否包含某字符集合中的字符 #方案一 适用于字符串集合 print '---1' def ContainAny(seq,aset): for c in seq: if c in aset: return True return False print ContainAny('abc中国','a') print ContainAny(u'abc中国','a') print ContainAny(u'abc中国','中') #print ContainAny('中',u'abc中国') 不能编译 #方案二 迭代器方法 import itertools def ContainAnyIter(seq,aset): for item in itertools.ifilter(aset.__contains__,seq): return True return False print '---2' print ContainAnyIter('abc中国','a') print ContainAnyIter(u'abc中国','a') print ContainAnyIter(u'abc中国','中') #print ContainAny('中',u'abc中国') 不能编译 #集合相减 print '---3' a = [1,2,3] b = [1,2,3,3,4,5,0] print set(a).difference(b) print set(b).difference(a) #注意 差集是这个 print set(a).symmetric_difference(b) print set(a).symmetric_difference(b) #方案三 变态方案 不支持unicode print '---4' import string strsrc = 'abc' notrans = string.maketrans('','') #替换创建 print strsrc.translate(notrans) trans12 = string.maketrans('ab','12') #替换创建 print strsrc.translate(trans12) def ContainsAnyBT(astr,strset): return len(astr) != len(astr.translate(notrans,strset)) print ContainsAnyBT('abc中国','a') #print ContainsAnyBT(u'abc中国','a') #print ContainsAnyBT(u'abc中国','中') #print ContainsAnyBT(u'abc中国',u'中')
打印结果如下:
中国
---1
True
True
True
---2
True
True
True
---3
set([])
set([0, 4, 5])
set([0, 4, 5])
set([0, 4, 5])
---4
abc
12c
True