在文件中搜索正则表达式列表,Python

在文件中搜索正则表达式列表,Python,python,regex,file,search,Python,Regex,File,Search,我在使用python正则表达式搜索文件时遇到了一些问题 我想输入一个正则表达式列表,并返回一个锯齿状列表中与其中一个匹配的文件行,该列表的索引方式与rexex列表相同,即,如果一行与第一个正则表达式匹配,它将添加:results[0]。追加(行),如果第二个匹配:results[1]。追加(行)等等 import re def search(path, regex_list): reg_list = [re.compile(regex) for regex in regex_list

我在使用python正则表达式搜索文件时遇到了一些问题

我想输入一个正则表达式列表,并返回一个锯齿状列表中与其中一个匹配的文件行,该列表的索引方式与rexex列表相同,即,如果一行与第一个正则表达式匹配,它将添加:
results[0]。追加(行)
,如果第二个匹配:
results[1]。追加(行)
等等

import re

def search(path, regex_list):
     reg_list = [re.compile(regex) for regex in regex_list]
     results = reg_list.__len__()*[[]]
     with open(path, 'r') as fp:
         for line in fp:
             for i, reg in enumerate(reg_list):
                 if reg.search(line):
                     results[i].append[line]
    return results

print(search("./log", ['1234', '1233']))
我希望我的输出是:

[['log entry 1234\n'],['log entry 1233\n']]

但我真正得到的是:

[['log entry 1234\n','log entry 1233\n'],['log entry 1234\n','log entry 1233\n'].


我对python非常陌生,所以我可能会做一些非常愚蠢的事情,知道它是什么吗?

通过将空列表(
results=reg\u list)乘以。在代码中,只需创建几个指针,所有指针都指向同一个空列表

如果某个代码后来向该列表追加了某些内容,则所有指针都指向该扩展列表

而是在初始化时创建一个(不相同的)空列表列表:

[[] for reg in reg_list]

我建议为描述regexp模式的字符串命名,编译版本为regexp,在应用
match
后,我将它们称为matches,以避免像regex和reg这样的混淆。但这不是这里的主题。