簡體   English   中英

從打印聲明中排除IP地址

[英]Excluding IP addresses from a print statement

我有以下打印語句像這樣返回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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM