Python技术问询:提取特定词后字符串及完善JIRA工单描述代码
解决你的两个Python技术需求
需求1:提取文本行中特定单词之后的字符串
这里有两种实用的方法,你可以根据场景灵活选择:
方法1:用字符串split()方法(简单直接)
这种方法适合目标单词唯一,或者你只需要第一次出现该单词后内容的场景。示例代码:
text_line = "User requested: install Python 3.10 and configure virtual environment" target_word = "requested:" # 只分割一次,取第二部分并去除首尾空格 result = text_line.split(target_word, 1)[1].strip() print(result) # 输出: install Python 3.10 and configure virtual environment
注意:如果目标单词不在文本里,直接取[1]会报错,建议加个判断兜底:
if target_word in text_line: result = text_line.split(target_word, 1)[1].strip() else: result = "" # 或者按你的需求处理“单词不存在”的情况
方法2:用正则表达式(适配复杂场景)
如果目标单词前后有不确定的字符(比如大小写、空格、特殊符号),正则会更灵活。示例:
import re text_line = "INFO: 2024-05-20 - Task Completed: data processing finished" target_word = "completed:" # 自动转义目标单词的特殊字符,匹配不区分大小写 pattern = re.compile(re.escape(target_word) + r"\s*(.*)", re.IGNORECASE) match = pattern.search(text_line) if match: result = match.group(1).strip() print(result) # 输出: data processing finished else: result = ""
re.escape()会自动处理目标单词里的特殊字符(比如冒号、点号),避免正则语法冲突;re.IGNORECASE让匹配不区分大小写,适配更多情况。
需求2:完善JIRA JSON提取无子任务工单描述的代码
我帮你补全并优化了代码,处理了各种边界情况(比如工单可能没有description字段),同时保留了对Python2的兼容。完整代码如下:
#!/usr/bin/python import sys import json # Python2 编码兼容处理 if sys.version[0] == '2': reload(sys) sys.setdefaultencoding("utf-8") # 检查是否传入了JSON文件路径参数 if len(sys.argv) < 2: print("请传入JIRA导出的JSON文件路径作为参数!") sys.exit(1) datapath = sys.argv[1] try: # 用utf-8编码加载JSON文件,避免中文乱码 with open(datapath, 'r', encoding='utf-8') as f: data = json.load(f) except Exception as e: print(f"加载JSON文件失败:{str(e)}") sys.exit(1) # 打开输出文件,确保utf-8编码写入 with open('output.txt', 'wt', encoding='utf-8') as output_file: # 遍历所有工单,用get()避免KeyError for issue in data.get('issues', []): fields = issue.get('fields', {}) # 判断是否没有子任务 subtasks = fields.get('subtasks', []) if len(subtasks) == 0: # 获取工单描述,处理描述为空的情况 description = fields.get('description', '') issue_key = issue.get('key', '未知工单') if description.strip(): # 写入工单key和描述,方便对应 output_file.write(f"工单{issue_key}描述:\n{description}\n\n") else: # 可选:记录没有有效描述的工单 output_file.write(f"工单{issue_key}无有效描述\n\n") print("处理完成,结果已保存到output.txt")
代码优化点说明:
- 增加了参数检查和文件加载异常处理,避免程序莫名崩溃
- 用
get()方法访问字典键,防止某些工单缺少subtasks或description字段导致报错 - 用
with语句管理文件,自动关闭文件句柄,更安全可靠 - 写入文件时指定
utf-8编码,彻底避免中文乱码问题 - 增加了工单key标识,方便你对应到具体的JIRA工单
- 处理了描述为空的情况,可选记录这类工单
运行时只需要在命令行输入:python your_script.py path/to/your/jira_export.json 就能生成结果文件啦。
内容的提问来源于stack exchange,提问作者Milister
相关产品推荐
相关产品推荐

