我需要从嵌套的字符串列表中过滤字符串。我已阅读现有答案并尝试使用defaultdict
来执行此操作:
import sys
from collections import defaultdict
def isRelevant(string_set):
if string_set.find("a1") != -1 or string_set.find("a2") != -1 or string_set.find("b3") != -1:
return True
else:
return False
def data_filter(string_matrix):
new_list = []
for string_set in string_matrix:
temp = filter(isRelevant, string_set)
new_list.append(temp)
return new_list
def main():
string_matrix = [ ['a1','a2','a3','b1','b2','b3'],['a1','a2','a3','b1','b2','b3','c1','c2','c3'] ]
filtered_strings = data_filter(string_matrix)
for each in filtered_strings:
print each,
if __name__ == '__main__':
main()
以上是包含字符串的嵌套列表列表的工作示例。
此示例运行良好并返回预期输出['a1', 'a2', 'b3'] ['a1', 'a2', 'b3']
我现在尝试创建的是输出
的情况[ ['a1','a2','a3'],['c1','c2','c3'] ]
目的是基本上说"如果你发现' a1',只过滤' aX'如果您发现' c1',请过滤“cX'”。 意味着根据特定字符串过滤特定字符串。
我尝试将isRelevant
方法更改为:
def isRelevant(string_set):
if string_set.find("a1") != -1:
if string_set.find("a1") != -1 or string_set.find("a2") != -1 or string_set.find("a3") != -1:
return True
elif string_set.find("c1") != -1 or string_set.find("c2") != -1 or string_set.find("c3") != -1:
return True
else:
return False
上面的代码旨在过滤' aX'如果' a1'找到,并以' cX'。
进行过滤我得到的输出是:
['a1'] ['a1', 'c1', 'c2', 'c3']
第二步中我的代码可能存在什么问题,是否有更好的方法根据特定字符串执行过滤特定字符串'?