Python 从打印语句中排除IP地址

Python 从打印语句中排除IP地址,python,json,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" ] } 我有正则表达式“

我有下面的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来处理所有输出。

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

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

工作完美。你能解释一下这到底是怎么回事吗?我在前面查看时看到了一些关于re.compile的引用,但我并不真正理解它在做什么。
re.compile('yourPatternHere')
基本上是从指定的模式创建一个regex对象,该对象可以与
search()
match()
函数重用。请参阅本页底部的更多内容:完美工作。你能解释一下这到底是怎么回事吗?我在前面查看时看到了一些关于re.compile的引用,但我并不真正理解它在做什么。
re.compile('yourPatternHere')
基本上是从指定的模式创建一个regex对象,该对象可以与
search()
match()
函数重用。请参阅本页底部的更多内容: