尝试清理python列表,我能够删除确切的字符串匹配。如何删除部分匹配?
exclude = ['\n','Hits','Sites','blah','blah2','partial string','maybe here']
newlist = []
for item in array:
if item not in exclude:
newlist.append(item)
这里的问题是“项目不在排除中”......它完全匹配。
我应该使用以下方法:
s = "This be a string"
if s.find("is") == -1:
print "No 'is' here!"
else:
print "Found 'is' in the string."
在某种程度上我回答了我自己的问题:)我猜是否有一个操作数替代'in'?
由于
答案 0 :(得分:2)
请尝试使用以下生成器:
def remove_similar(array, exclude):
for item in array:
for fault in exclude:
if fault in item:
break
else:
yield item
答案 1 :(得分:1)
我不确定你在这里问的是什么。是否要过滤掉array
中exclude
元素的子字符串中的所有元素?如果是这样,您可以替换您的行
if item not in exclude:
类似
if not any(item in e for e in exclude):
答案 2 :(得分:1)
exclude = ['\n','Hits','Sites','blah','blah2','partial string','maybe here']
newlist = []
for item in array:
ok = True
for excItem in exclude:
if excItem in item:
ok = False
break
if ok: newlist.append(item)
答案 3 :(得分:1)
这是你在寻找什么?
blacklist = ['a', 'b', 'c']
cleaned = []
for item in ['foo', 'bar', 'baz']:
clean = True
for exclude in blacklist:
if item.find(exclude) != -1:
clean = False
break
if clean:
cleaned.append(item)
print cleaned # --> ['foo']
答案 4 :(得分:0)
怎么样:
all( s.find(e) == -1 for e in exclude )
如果在True
中找不到任何排除字符串作为子字符串,则会返回s
。
如果部分意味着s
是e
的子字符串,那么:
not any( e.find(s) != -1 for e in exclude )
如果在True
中的任何字符串中找不到s
作为子字符串,将返回exclude