Skip to main content
 首页 » 编程设计

python之按匹配集对项目进行分组

2025年05月04日14haluo1

我正在尝试解析大量配置文件并根据内容将结果分组到单独的组中 - 我只是不知道如何处理这个问题。例如,假设我在 3 个文件中有以下数据:

config1.txt 
ntp 1.1.1.1 
ntp 2.2.2.2 
 
config2.txt 
ntp 1.1.1.1 
 
config3.txt 
ntp 2.2.2.2 
ntp 1.1.1.1 
 
config4.txt 
ntp 2.2.2.2 
The results would be: 
Sets of unique data 3: 
Set 1 (1.1.1.1, 2.2.2.2): config1.txt, config3.txt 
Set 2 (1.1.1.1): config2.txt 
Set 3 (2.2.2.2): config4.txt 

我了解如何对文件目录进行 glob,循环 glob 结果并一次打开每个文件,并使用正则表达式匹配每一行。我不明白的部分是我如何存储这些结果并将每个文件与一组结果进行比较,即使条目顺序不正确,但匹配条目明智。任何帮助将不胜感激。

谢谢!

请您参考如下方法:

filenames = [ r'config1.txt', 
              r'config2.txt', 
              r'config3.txt', 
              r'config4.txt' ] 
results = {} 
for filename in filenames: 
    with open(filename, 'r') as f: 
        contents = ( line.split()[1] for line in f ) 
        key = frozenset(contents) 
        results.setdefault(key, []).append(filename)