2017-03-06 109 views
1

我正在使用subprocess.check_output向slack發送消息。格式是一團糟,我正在考慮嘗試markdown == false,但只希望它爲每個模塊設置,並且我不確定如何執行此操作。我不知道是否會雖然解決我的問題,更大的問題是如何格式化以下文本是可讀格式化從Errbot發送的Slack消息

bad formatting

應該像(或接近):

clean formatting

代碼:

@botcmd 
def find_vm(self, args, SearchString): 
    output = subprocess.check_output(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", ". \"C:\\Program Files\\Toolbox\\PowerShell Modules\\vmware\\./vmware.psm1\";", "find-vm", SearchString]) 
    return output 
+1

正則表達式可以在這裏幫助:https://docs.python.org/3/library/re.html。 你有一個模式「text:text」,其間有空格。 – elena

回答

1

裹在三反引號的輸出,這表示在降價的代碼塊。另外,還要注意,因爲它返回一個字節流,而不是「文字」,我們傾向於認爲它應該解碼的subprocess.check_output輸出:

@botcmd 
def find_vm(self, args, SearchString): 
    output = subprocess.check_output(["C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", ". \"C:\\Program Files\\Toolbox\\PowerShell Modules\\vmware\\./vmware.psm1\";", "find-vm", SearchString]) 
    return "```\n{output}\n```".format(output=output.decode("utf-8")) 

務必與編碼實際的系統來取代UTF-8正在使用。

+0

非常感謝你!你碰巧知道我會如何添加三個反引號來使它成爲一個鬆散的片段?是否像添加三個反引號一樣簡單? ha –

+0

不,緩存中的片段是一種文件上傳類型:https://api.slack.com/methods/files.upload。 Errbot支持文件上傳的鬆弛,但不是作爲一個片段我相信如果你想這樣做,你必須自己調用鬆弛的API(一些文檔可以在http://errbot.io /en/latest/user_guide/plugin_development/backend_specifics.html) –