2017-08-15 93 views
-2

我有一個python腳本,使一個curl命令和讀取輸出到一個名爲變量的數量output解析輸出來算OCCURENCES

輸出類似於這樣:

"endpoint1: { 
    "[service1]endpoint": { 
    }, 
    "[service1]endpoint": { 
    }, 
    "[service2]endpoint": { 
    }, 
    "[service2]endpoint": { 
    } 
    } 
"endpoint2": { 
    "[service1]endpoint": { 
    } 
    }, 

我需要做的是分析這個輸出來計算[]之間的唯一字符串並打印出現事件。所以像這樣:

service1 3 
service2 2 

任何幫助我如何去做這件事。謝謝。

+0

看起來像JSON給我。嘗試使用JSON閱讀器。 – DyZ

+0

嘗試使用正則表達式,如're.search(r'\ [(。*)\]',output).group(1)',但這隻給了我一個輸出service1 – ashkash

+0

@AChampion這是我到目前爲止:'re.findall(r'\ [(。*)\]',output)'這給了我[]中所有字符串的列表,如['service1','service1','service2 ','service2','service1']。現在我需要計算唯一字符串的出現次數。 – ashkash

回答

0

如果輸入是無效的JSON,用下面的辦法與collections.Counter對象和re.findall()功能:

result = collections.Counter(re.findall(r'\[([^]]+)\]', output)) 
print(result) 

輸出:

Counter({'service1': 3, 'service2': 2}) 
+0

任何方式來格式化輸出,所以你有一行每個字符串和它的出現次數? – ashkash

+0

@ashkash,我不明白你的意見 – RomanPerekhrest

+0

沒關係,我想通了。謝謝。 – ashkash