Python字符串拼接实现Jira自动化JQL查询问题求助
Jira自动化JQL查询构建问题解决
我在用Python开发Jira自动化程序,需要集成JQL搜索功能,构建两类JQL查询:查询“已关闭工单”和“已创建工单”。但当前代码运行后生成的列表内部包含元组,无法得到预期的查询语句列表。
原代码
#Day 0 - current day , Day '-1' - Yesterday jql_day = ['','-1','-2','-3'] jql_list_one_str = [] jql_list_two_str = [] action = ['resolved','created'] for i in jql_day: jql_str = 'project = MRCHNT AND '+ action[0]+' >= startOfDay(' + i + ')', 'project = MRCHNT AND '+ action[1]+' >= startOfDay(' + i + ')' jql_list_one_str.append(jql_str) jql_str_2 = 'AND '+ action[0] +' <= startOfDay(' + i + ')','AND '+ action[1] +' <= startOfDay(' + i + ')' jql_list_two_str.append(jql_str_2) # jql_request = [' '.join(x) for x in zip(jql_list_one_str[1:], jql_list_two_str[:-1])]# Split list # jql_request.insert(0,jql_list_one_str[0]) print(jql_list_one_str,jql_list_two_str)
问题根源
原代码中直接用逗号将两个字符串赋值给变量(比如jql_str = "xxx", "yyy"),这在Python里会创建元组,而非分别处理两个action对应的语句,导致后续列表里全是元组,无法正确拼接成目标JQL语句。
修正后的代码
我们需要为每个action(resolved和created)单独构建对应的JQL列表,直接生成符合预期的查询语句:
# Day 0 - current day , Day '-1' - Yesterday jql_day = ['', '-1', '-2', '-3'] resolved_jql = [] created_jql = [] # 处理第一个条目(仅>= startOfDay()) resolved_jql.append('project = MRCHNT AND resolved >= startOfDay()') created_jql.append('project = MRCHNT AND created >= startOfDay()') # 处理后续的区间查询 for idx in range(1, len(jql_day)): start_day = jql_day[idx] end_day = jql_day[idx-1] # 构建resolved的区间查询 resolved_query = f'project = MRCHNT AND resolved >= startOfDay({start_day}) AND resolved <= startOfDay({end_day})' resolved_jql.append(resolved_query) # 构建created的区间查询 created_query = f'project = MRCHNT AND created >= startOfDay({start_day}) AND created <= startOfDay({end_day})' created_jql.append(created_query) # 输出结果 print("resolved列表:") for q in resolved_jql: print(repr(q)) print("\ncreated列表:") for q in created_jql: print(repr(q))
预期输出
resolved列表
'project = MRCHNT AND resolved >= startOfDay()' 'project = MRCHNT AND resolved >= startOfDay(-1) AND resolved <= startOfDay()' 'project = MRCHNT AND resolved >= startOfDay(-2) AND resolved <= startOfDay(-1)' 'project = MRCHNT AND resolved >= startOfDay(-3) AND resolved <= startOfDay(-2)'
created列表
'project = MRCHNT AND created >= startOfDay()' 'project = MRCHNT AND created >= startOfDay(-1) AND created <= startOfDay()' 'project = MRCHNT AND created >= startOfDay(-2) AND created <= startOfDay(-1)' 'project = MRCHNT AND created >= startOfDay(-3) AND created <= startOfDay(-2)'
内容的提问来源于stack exchange,提问作者Alex_Borovskii
相关产品推荐
相关产品推荐

