从打印状态中排除IP地址

2024-03-29 11:35:21 发布

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

下面的print语句返回如下json

groups = {key : list(set(items)) for (key, items) in groups.iteritems() }
print(self.json_format_dict(groups, pretty=True))

{
....
  "role_1": [
    "10.1.1.1",
    "hostname1",
    "hostname2",
    "10.1.1.2"
  ]
}

我有正则表达式“\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$”来匹配IP地址

我对python还不够熟悉,无法真正将这些部分放在一起,这样我的json返回就不包含任何IP地址。我甚至不知道如何在文档中搜索如何做到这一点。我认为groups是本例中的一个对象,我看到的所有示例都是用于处理文本字符串的

通常我会通过sed来获得所需的输出,但在这种情况下,需要用python来处理


Tags: keyinselfjsonformatforprettyitems
1条回答
网友
1楼 · 发布于 2024-03-29 11:35:21

尝试以下操作,将每个包含主机名和IP的列表传递给

import re

def filterIP(fullList):
    regexIP = re.compile(r'\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$')
    return [i for i in fullList if not regexIP.match(i)]

这样就可以过滤掉IP

因此,在你的情况下,打印出过滤后的字典,你可以使用

groups = {key : filterIP(list(set(items))) for (key, items) in groups.iteritems() }
print(self.json_format_dict(groups, pretty=True))

相关问题 更多 >