我的列表中有大量的文本数据,而我的问题是查找特定值的速度太慢。因为我必须从列表中找到50多个关键字。
这是我的工作脚本:
for num, line in enumerate(MyList):
passList = []
if "pass" in line:
passList.append(line)
failedList = []
if "failed" in line:
failedlist.append(line)
doneList = []
if "done" in line:
doneList.append(line)
#..
#...
#....more and more conditions here
如果没有其他解决方案,有没有办法快速执行或使用线程。
任何建议/评论,提前谢谢..
答案 0 :(得分:0)
问题是您要为每个关键字对每行进行一次完整扫描。您想在一次扫描中找到匹配项。正则表达式将更有效地做到这一点。只需构建一个包含所有密钥并与之匹配的正则表达式模式:
keys = ('foo', 'bar', 'stat', 'key', 'abcd', 'efgh', '$')
pattern = re.compile("(%s)" % "|".join(keys))
data = [
'this is foo',
'this is bar',
'this is abcd',
'this is efgh',
'this is no match'
]
results = defaultdict(list)
for string in data:
match = pattern.search(string)
results[match.group(1)].append(string)
print results