在python中比较数组与多行匹配

2024-09-28 15:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将所有值相互比较,例如:

Array 1 -> Line1 == Array2 -> All lines

但我这样比较如下:

Array 1 -> Line 1 == Array 2 -> Line 1

我尝试使用zip()函数,但它只将array2的值转换为一个值

脚本

# concate dict values result
for array1 in outputsocks:
    for array2 in resultcmdb:
        m = re.compile(r'^('+array1+')', re.MULTILINE)
        results = m.search(array2, re.MULTILINE)
        print(results)

输入

outputsocks = ['srv1.fqdn.domain.com','srv2.domain.com','srv3.domain.com']
resultcmdb = ['srv3','srv2','srv1.fqdn']

输出

None
Match
None

Tags: inrecomfordomainlinearrayresults
2条回答

如何使用:

import re

outputsocks = ['srv1.fqdn.domain.com','srv2.domain.com','srv3.domain.com']
resultcmdb = ['srv3','srv2','srv1.fqdn']

[re.match(r"^({})".format(item), item2) for item, item2 in zip(resultcmdb,outputsocks)]

输出:

[None, <_sre.SRE_Match object; span=(0, 4), match='srv2'>, None]

如果我理解正确,你想匹配每个索引吗?如果这是真的,应该这样做:

outputsocks = ['srv1.fqdn.domain.com','srv2.domain.com','srv3.domain.com']
resultcmdb = ['srv3','srv2','srv1.fqdn']

for sock, cmdb in zip(outputsocks, resultcmdb):
    if cmdb in sock:
        print("Match")
    else:
        print("No match")

相关问题 更多 >