从打印语句中排除IP地址

时间:2017-04-13 22:06:11

标签: python json

我有以下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地址。我甚至不确定如何搜索文档以了解如何执行此操作。我认为群组在这种情况下是一个对象,我见过的所有例子都是用于处理文字字符串。

通常我会通过sed管道输出以获得我需要的东西,但在这种情况下,它需要全部在python中处理。

1 个答案:

答案 0 :(得分:2)

尝试以下操作,将包含主机名和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))