下面是multi-line
字符串的模式。
abcdef-001a.mno123.xyz.com
abcdef-001b.mno123.xyz.com
abcdef-001a.pqr123.xyz.com
abcdef-001b.pqr123.xyz.com
lkjh-001a.abc123.xyz.com
lkjh-001b.abc123.xyz.com
lkjh-001a.def123.xyz.com
lkjh-001b.def123.xyz.com
mnbg-001a.tyu123.xyz.com
mnbg-001b.tyu123.xyz.com
mnbg-001a.ijk123.xyz.com
mnbg-001b.ijk123.xyz.com
reg-ex (.*)\.(.*)\.xyz\.com
匹配上述模式,其中group1
与多个group2
关联(例如:与mno123
和pqr123
关联的abcdef-001a
)
我们如何识别这种配对?
Output1:
{'mno123':'pqr123', 'abc123':'def123', 'tyu123':'ijk123'}
下一步,将与上述字典相关的所有此类行分离。
Output2:
output2_list1:
abcdef-001a.mno123.xyz.com
abcdef-001b.mno123.xyz.com
output2_list2:
abcdef-001a.pqr123.xyz.com
abcdef-001b.pqr123.xyz.com
output2_list3:
lkjh-001a.abc123.xyz.com
lkjh-001b.abc123.xyz.com
output2_list4:
lkjh-001a.def123.xyz.com
lkjh-001b.def123.xyz.com
output2_list5:
mnbg-001a.tyu123.xyz.com
mnbg-001b.tyu123.xyz.com
output2_list6:
mnbg-001a.ijk123.xyz.com
mnbg-001b.ijk123.xyz.com
它可以是单独列表或任何其他可行的最佳方法来存储这些。这里我只是显示为单独的列表,以获得清晰的图片。
如上所述,它可以包含许多这样的线,并且还可以有许多不同的group1
与group2
相关联。
1条答案
按热度按时间wh6knrhe1#
我担心这可能是一个家庭作业问题,所以我不会给予代码,但这里是逻辑:
1.导入re库,以便可以使用正则表达式。
1.让我们假设你正在从一个文件中阅读这些行,所以你对每一行都做了这些事情:
1.在读取每一行时,对每一项使用match()函数,并将结果捕获为match对象。
1.每次,使用group()函数从匹配对象中提取两个感兴趣的组,并将它们存储在字典中,如下所示:检查字典,看看group(2)是否是一个键,如果不是,添加它,但总是将group(1)添加到与该键相关的列表中。
1.在阅读所有行并构建字典之后,您可以遍历字典并打印与每个键相关联的列表中的所有项的分组。