[英]How to differentiate between string and other args
我正在尝试解析从 slack 发送的 python 代码中的参数......这意味着当有人在 slack 中键入命令时,我想根据字符串和其他参数进行区分。
例如,如果我使用 !command inc-number 一些字符串,然后有时使用 !command inc-number word 我怎么能区分两者
================================================== ==============================
def update(self,*args):
inc = args[0]
id = self.getincsysid(inc) # this func gets the sysid of inc to be update in servicenow.
request = 'api/now/table/incident/'
service_now_url = service now url
url = service_now_url + request + id
headers = {"Accept": "application/json"}
# I am stuck here how to differentiate if args1 is a string.
if args[1] == 'string': #do below
requests.put(url, auth=(user, pwd), headers=headers, json=
{'comments': args})
return 'inc updated'
elif args[1]=='word':
impact = 'imapct1'
criticality= 'urgency1'
requests.put(url, auth=(user, pwd), headers=headers, json={'impact':
impact, 'criticality': urgency})
else:
return 'none matched'
如果您正在测试 args[1] 是否是字符串,请使用
if type(args[1]) = str:
很难区分一个词和一个字符串,主要是因为一个word
就是一个string
。
如果我们作为一个例子word
串"p1"
和一个例子一个phrase
字符串"work done"
,我们可以定义一个word
为一组不包含空格的一个或多个字符,和一个phrase
作为由空格分隔的一组单词。
从这个假设开始,我们的args[1]
是一个phrase
if 包含至少一个空格(我们还应该验证它包含至少 2 个字符......),否则如果它包含至少 1 个字符,则它是一个word
,否则是有事吗:
if " " in args[1]: #do below
requests.put(url, auth=(user, pwd), headers=headers, json=
{'comments': args})
return 'inc updated'
elif len(args[1])>0:
impact = 'imapct1'
criticality= 'urgency1'
requests.put(url, auth=(user, pwd), headers=headers, json={'impact':
impact, 'criticality': urgency})
else:
return 'none matched'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.